Ссылки в PHP (&$var1), переменные переменых ($$var2) и их практическое применение?
&$var1 - часто используется для передачи значения в функцию по ссылке, чтобы можно было изменить значение внутри и снаружи тоже изменилось. часто используется и в стандартных функциях например preg_match 3ий параметр. 
$$var2 - никогда, очень злая магия.
По ссылке передаются в метод данные, которые должны быть изменены внутри метода. Иногда это избавляет от лишнего кода. Плюс расход памяти в некоторых случаях ниже.
По поводу переменных переменных. Используются при написании обобщенного кода. Вот пример. Это поведение Yii2 для хранения деревьев в БД. Поведение - это фича фреймворка - что-то вроде трейта или миксина.
В общем его можно подсключить к модели и она сама будет заполнять служебные поля при перемещении узлов. Для гибкости, при подключении можно указать поле таблицы, по которому надо сортировать данные. MaterializedPathBehavior::$positionAttribute. Это поле используется в коде для построения запросов:$position = $this->node->{$this->positionAttribute}
Таким образом достигается гибкость. Тому, кто будет использовать это поведение не придется подгонять схему своей БД под него. Он сможет указать поля, с которыми надо работать.
Но конечно этим надо пользоваться с осторожностью и только там, где вы точно уверенны, что это необходимо. Иначе можно наворотить неподдерживаемую кашу.UPD.
Еще немного о переменных переменных. Вообще вместо них можно добавить абстрактных методов вроде getPositionAttribute() и заставить пользователя переопределить их. Это будет более правильно идеалогически. Но, используя переменные, появляется возможность настройки без написания лишних классов.