Get Location of Particle Keys with real unit size
With a function like this one:

def get_unitscale(scene):
    unit_settings = scene.unit_settings

    if unit_settings.system in {"METRIC", "IMPERIAL"}:
        # The units used in modelling are for display only. 
        # Behind the scenes everything is in meters.
        return unit_settings.scale_length
    else:
        # No unit system in use
        return 1


By multiplying with the scale value, you get coordinates in meters:

scale = get_unitscale(bpy.context.scene)
co = ps.particles[0].hair_keys[5].co
# Assuming the unit system is set to meters
co_in_meters = co * scale


By the way, there is also the co_hair() method for getting hair coordinates:
https://docs.blender.org/api/2.79/bpy.types.ParticleSystem.html?highlight=co_hair#bpy.types.ParticleSystem.co_hair

And if you want to retrieve coordinates of the hair with final render settings, you will have to call set_resolution() first:
https://docs.blender.org/api/2.79/bpy.types.ParticleSystem.html?highlight=co_hair#bpy.types.ParticleSystem.set_resolution