У тебя слишком объемные вопросы... Что именно тебя интересует по ссылкам? Очень коротко: это - alias (дополнительное имя) объекта... Рассмотрению работы со ссылками посвящены целые главы умных книг, ты же не думаешь, что все то же самое можно уместить в несколько строк? (кстати, в C вообще нет ссылок, только в С++, отсюда возникает сомнение: ты часом ссылки - references - с указателями не перепутал?)
Что касается второго вопроса: Это не называется "шифрование" имен. Это так называемый name mangling - "декорирование" имени... Связано с тем, что С++ допускает перегрузку функций, что делает возможным присутствие в программе нескольких функций с одинаковыми именами, отличающихся только параметрами, а этого допускать нельзя, компилятор должен различать все функции. Поэтому при компиляции к имени функции добавляется еще и список параметров в сокращенном виде (как именно происходит "декорирование" - зависит от компилятора, поэтому никаких конкретных примеров приводить не буду)... А последствия - сложности с экспортом функций (особенно методов классов) из DLL. Вот тут
Fanat с этим столкнулся:
Dll.