What on earth do you want to fiddle with the symbol table for?? It's dangerous, messy, and there's better ways to do it.
As for your questions, *variables is bound to *main:: when you bind it. Hence, if the variable hasn't been created yet, it's not in *main::. Compilation doesn't populate anything. All it does is convert the script to opcodes. When those opcodes execute, that's when the SV's are created, and a reference entered into *main::.
We are the carpenters and bricklayers of the Information Age.
Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.