В целом в других ответах все уже описали, я лишь проголосую за разработку этого на JS, а не на CSS, т.к. часто в таких переходах будут разные кривые траектории или рандомные значения, которые было бы неплохо генерировать каждый раз заново.
Ну и простенький примерчик чего-то похожего по принципу действия:
P.S.: Но вообще-то в плане производительности было бы уместно все эти геометрические штуки рисовать на канвасе, а не делать кучу одновременных изменений CSS-свойств у элементов.
Кликнул надпись убралась, блок с кубиками приблизился и наклонился, потом еще приблизился и наклонился, потом совсем приблизился, и появился новый с кубиками помельче, с ним аналогично. Если надо переставить кубики под нужным углом - переставляешь.