1. Переменных после компиляции нет - это просто значения на стеке, с которыми производятся какие-то операции (даже адресов на таком уровне абстракции нет)
2. На счёт vtable не подскажу, но там вроде уже есть имена методов и указатели на реализацию.
3. Переменная ссылочного типа (например string) - это ссылка на стеке, которая указывает на данные в куче.
4. Имён локальных переменных даже в метаданных нет
После компиляции в машинный код - процессор работает с последовательностями байтов, числами, указателями. Тоже никаких переменных нет
Советую обратить внимание на сайт sharplab.io - там ты можешь увидеть, как выглядит твой код на разных этапах, начиная с парсинга в AST, заканчивая ассемблером