В базовом варианте - в сам момент появления фоновой картинки у нее изменяются свойства 
transform: scale (уменьшаем размер), 
filter: blur (уменьшаем размытие) и 
opacity (либо делаем появление этой картинки, либо уход предыдущего фона с прелоадером). Затем плавно меняется 
transform: translate в зависимости от положения мыши или еще чего-то (на видео видно, что все немного "едет"). Главная опасность, которая может поджидать - это плохая производительность CSS-фильтров, так что все может немного подлагивать.
По-хорошему, конечно, это все стоило бы написать на шейдерах и вместо 
transform: translate прикрутить что-то вроде 
fake3d, но это уже совсем другая история...