The default is visible — rotate to rotateY(180deg) and the text keeps rendering, mirrored left-right. Set backface-visibility: hidden and the element vanishes the moment it passes 90 degrees.
That behaviour is exactly what a flip card needs: stack a front and a back face in the same spot, pre-rotate the back by rotateY(180deg), then rotate the shared parent — whichever face is currently facing the camera is the only one hidden's rule lets through.
Without perspective, or with preserve-3d missing somewhere in the nesting, the rotation itself won't read as 3D even if this property is set — treat perspective, backface-visibility and transform-style as one set. Safari used to require the -webkit-backface-visibility prefix.
When to use
Use hidden when "which face is showing" carries meaning — flip cards, flipping loaders. If you just need a spin animation, leave the default (visible) alone.