Используется CSS hover + transition.
Оранжевые шарики появляются изменяя box-shadow's на div'e с картинкой.
Текст сидит там с самого начала и появляется посредством изменения scale(0) на scale(1).
PS: У Chrome'a есть отличная функция right click + inspect element, где можно форсить hover state на элементе и смотреть что и как изменилось.