I can't get snap-to-face to work the way I would expect in 2.83beta, either..
The shipped TinyCAD add-on is one option, for this one..
(Assuming source and target are part of the same object) Select 1 face, 1 edge
Use TinyCad's Extend Edge to Face
(Maybe with Automerge switched on) GG slide the source vertex down the extended edge, all the ...
Basically you have set it so transformations only affect the origin of the object, to disable this setting,
go to Options then disable Origins
There is also a very similar looking thing that one can accidentally enable under Gizmos > Object Gizmos
To put objects back into World origin, you need to reset their transforms.
You can do it for both Donut and Icing at once.
Shift Drop the Icing onto the Donut in the outliner. So they move together.
Select your Donut and clear all transforms one by one. This will put both in center.
Select Icing and clear Parent relationship (Alt+P). Then go Object > Apply >...
The bones of your right leg are not well oriented, you must have duplicated your left leg instead of symmetrized it. So delete the right leg, bend a bit the left leg (always better to show Blender in what direction it is supposed to bend), symmetrize it. As you'll see you'll need to correct the IK Pole Angle of the right lower leg (0°). It should work.
In the top bar there will be two orientation parameters when you click the MOVE tool. The first should be "default", make the second one "Normal" from the drop down menu. Move your face now in the desired direction.
A script to do this
Used as answer to Calculating and exporting global rotation of faces created from splitting an isosphere (possible dupe?) thought it would be good here too
Shows origin and local orientation of one split off face
Adds an icosphere, edge splits, separates and returns to object mode
Selected objects are the result of separate modifier.