Grow a border and the element gets bigger, or neighbours get pushed — border is part of the box model. outline isn't, so no matter how thick it is, surrounding layout never moves. outline-offset sets how far that line floats from the border edge: positive pushes it outward, negative pulls it inward.
That's exactly why it's the standard choice for focus rings — swapping border on every keyboard focus change causes a tiny reflow that nudges neighbours, while outline never does.
Modern browsers round the outline to match border-radius, but older engines used to draw it as a plain rectangle regardless — worth checking if you depend heavily on the rounded case. Also, if the offset pushes the outline past an ancestor's bounds and that ancestor has overflow: hidden, the outline gets clipped there, unlike a box-shadow's blur spread.
When to use
For focus rings, or any "selected" indicator that must not shift layout. If an ancestor has overflow: hidden, check the offset doesn't get clipped.