How can I use bmesh vert index as vertex color index?
Vertex colors are not stored on a vertex, they are stored on a loop (loop = corner of a poly). This means one vertex can have different vertex colors for each poly it is part of. So you would need to index into mesh.vertex_colors[&quot;Col&quot;].data using the loop index.
However, if you're using a bmesh, you can set the vertex color for a loop with loop[layer] = (r, g, b, a) where layer is your_bmesh.loops.layers.color[your_layer_name].
Try this:
import bpy
import bmesh

bpy.ops.object.mode_set(mode = 'OBJECT')

current_mesh = bpy.context.active_object.data

current_bm = bmesh.new()
current_bm.from_mesh(current_mesh)
current_bm.faces.ensure_lookup_table()

# TODO: get absolute position
# get location of face (atm it relative to object origin)
# bpy.context.object.matrix_world for world position left muli

# Get first color layer (create if needed)
if not current_bm.loops.layers.color:
    current_bm.loops.layers.color.new('Col')
layer = current_bm.loops.layers.color[0]

for face in current_bm.faces:
    # Current face center coord
    face_center_coord = face.calc_center_median()

    for loop in face.loops:
        # get vert coord
        current_vert_coord = loop.vert.co

        x = face_center_coord.x*0.5+0.5
        y = face_center_coord.y*0.5+0.5
        z = current_vert_coord.z

        # Unity use y for up direction, left hand axis
        loop[layer] = (x, z, y, 1.0)

# current_bmesh back to mesh
current_bm.to_mesh(current_mesh)
current_bm.free()

Tested with Blender 2.90.