transform-origin doesn't move the element — it only changes which point stays fixed while rotate/scale act on it. Values are %/px/keywords (top left, etc.) relative to the element's own box, and 3D transforms can add a third z value.
The dot in the demo marks whatever point is currently the pivot. Put it at a corner (0% 0%) and the element swings around that corner in a wide arc; put it at the centre (50% 50%) and it spins in place like a top.
The most common mix-up is treating it as a way to move the element — changing transform-origin alone leaves its on-screen position untouched; it only changes the path the following rotate/scale takes. A menu that unfurls from its trigger button's corner, or an accordion that expands from its top edge, are the textbook uses.
When to use
Use it to make a menu/tooltip appear to grow out of its trigger, or an accordion expand around its top edge.