Почему при применении к объекту трансформации поворота на 0° он поворачивается на 90°?
потому что изначально для псевдоэлемента прописано состояние transform: rotate(90deg); т.е. он изначально уже повернут за счет трансформации. а при наведении (когда срабатывает правило transform: rotate(0deg)) мы это поворот обнуляем и элемент возвращается в неповернутое состояние