How do I move an object in my scene using python?
You need to give bmesh.ops.translate a list of verts to translate.

Here I've used all verts,

bmesh.ops.translate(
    bm,
    verts=bm.verts,
    vec = (5 ,5 , 0) )


This will translate the mesh verts, the object will still be at (0, 0, 0).  To move the object, don't use the bmesh.translate op and  simply set its location

hexagon.location = (5, 5, 0)


We can then make a copy and move it somewhere else

anotherhex = hexagon.copy()
anotherhex.location = (10, 10, 5)


both objects share the same mesh "Mesh".   Translating the vertices of the mesh will be evident for all objects using that mesh.  

The coordinate system for blender is described here
https://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Coordinate_Spaces_in_Blender#Global_and_local_coordinates

Vertex coordinates are local, relative to the origin of the object.  Look at the default cube, the coords are the eight combinations of 1 and -1 for x, y, z from the origin at (0, 0, 0).  Moving the object via its location, (scaling, rotating for that matter)   leaves the local coordinates the same.

Translating the vertices moves them locally from the origin of the object, and leaving origin in the same position.  Akin to selecting all verts in edit mode and translating.

For most cases making a primitive with origin at (0,0,0) and then moving the object is the way to go, especially for multiple objects that share a mesh.