Is there a best practice rule for using %20 rather than a non-breaking space?
Steven Parker177,602 Points
%20 is just an ordinary space, expressed with URL encoding. It's not an HTML character entity code.
is a character entity code, and for "non-breaking space", which is different from a normal space in that it is treated for text-flow purposes as if it was a printing character.
So the choice between these should be easy as they have different practical uses, and are intended for different situations.