Should I be using Bmesh?

If i’m doing any kind of operation on a mesh ( doing a verlet rope simualtion with a chain of vertices and edges), should I be using the Bmesh representation or blender’s built in? I don’t understand what Bmesh is for.

I also don’t know how to call an individual vertex. I can use ‘for v in bm.verts’ but not ‘verts[0]’. I guess I’m supposed to use a for loop to create a matrix of vertices…