Why can't I access the rotation and location values of an object moved with empties and constraints with Python?
Modifiers alter mesh at a local level

The hook modifier, or most modifiers modify the mesh data, not the object transform.

The location of the hooked object could be estimated from all the hook empties (average there global translations).

Or use a copy location constraint.  Add all the verts to one group, make that the constraint target.  The rotation can be estimated (depends on mesh) using track to constraints.

For rotation consider parenting.

Can parent an object to 3 of the beautiful mesh vertices.

See this answer https://blender.stackexchange.com/a/175503/15543  The modifier for this case is shrinkwrap.  The cubes are parented to 3 vertices modified "foot" object.