How to iterate through mesh vertices and add hooks using script
Try this:

import bpy, bmesh

# Create a persistent reference to current object
current_obj = bpy.data.objects[ bpy.context.object.name ]

bpy.ops.object.mode_set( mode = 'EDIT' ) # Go to edit mode

bm = bmesh.from_edit_mesh( current_obj.data )

for i in range( len( bm.verts ) ):
    bpy.context.scene.objects.active = current_obj
    bpy.ops.mesh.select_all( action = 'DESELECT' ) # Deselect all vertices
    bm = bmesh.from_edit_mesh( current_obj.data )
    bm.verts.ensure_lookup_table()
    v  = bm.verts[i]
    v.select = True
    bm.select_flush( True )
    bpy.ops.object.hook_add_newob()

bpy.ops.object.mode_set( mode = 'OBJECT' )     # Back to object mode