It's slow because you're sending a drawcall for every polygon. And each drawcall means communication with the drivers and the GPU, which is slow (I don't know exactly how it is the OpenGL ES. But on Desktops your target is to minimize the amount of drawcalls).
And that is, where vbo's come in. A Vbo stores all the vertices of an object in a buffer. If you do so, you can render this object with only one drawcall. This means your target should be to pack as many polygons as possible into one vbo.
You are passing a vertex array to the vbo by calling glBufferData. Here is some more detailed explanation: http://stackoverflow.com/questions/5091570/most-basic-working-vbo-examplehttps://stackoverflow.com/questions/5091570/most-basic-working-vbo-example
If you need to render each polygon seperate, you can search for instanced rendering. By using this technique you can render alot of objects (which have the same geometry) and still use just one drawcall.