One reason the distance it returns may seem er.... funny sometimes is because the distance is measured from the 0,0,0 point of one object/actor straight to the other objects 0,0,0, point. So an arrow for example that is 20 feet in the air above an actor but the arrow is only 1 foot "away" from the actor's center will still give a get-distance of over 20 feet!
So trying to see if the arrow is 3 feet away form hitting and actor when the arrow is fired 5 feet above the ground gets more difficult then it may at first seem. So I do not use get distance for this and use a few lines of script to check and calculate the distance from the x y pos instead.
I discovered this in my hundreds of hours of working worth arrows last year. So most of the time I use x and y pos and my own simple (very simple) math to get distance when I need to be precise. But GetDistance will be very convenient to use in many cases not that I know I can call it every frame.
I agree with WillieSea - aside from the fact that the game can't update distances while in a while loop, calling GetDistance on the same NPC / object more than once in a given frame is, well, useless, for the reason just mentioned. From all my testing, GetDistance is a rather fast function.
Now, of course, there are some caveats to using it... sometimes it doesn't return good values, and you'll need to use the Distance Formula (argh, maths!) in order to get a proper distance.