Tried out the code (thanks for providing code!), but it looks to be working as-intended. I'll try to clarify a few things:
ToVector3() doesn't do any conversion on the coordinate space of the input Leap.Vector. In fact, ToVector3() is one of the most boring functions we have: It just converts a Leap.Vector consisting of components [X, Y, Z] to a UnityEngine.Vector3 consisting of components [X, Y, Z]. (Personally, I dislike that we don't provide an implicit conversion, but we cannot as a consequence of having each definition in different, external assemblies.)
I don't understand what you mean when you suggest that a position can be normalized. What would you expect the boundaries of this normalization to be?
Hand.PalmPosition returns the world-space position of the palm of the hand. Of course, hand positions are calculated relative to the LeapProvider. So if your LeapProvider is ten meters up and facing forward, Hand.PalmPosition will also be ten meters up, with the same offset from the LeapProvider as the hand is offset from the Leap Motion Controller.
One last important consideration is that we always assume one Unity unit of distance is one meter. So if you subtracted the LeapProvider's world-space position (transform.position) from a Hand.PalmPosition it provides, you would get the offset in meters from the LeapProvider to Hand.PalmPosition.
Let me know if you're still confused by something and I can try to help clarify further.