Почему на строке 10 значение по ключу показывается, а на строке 11 undefined?
Разница лишь в том, что "символ" id я задал через отдельную переменную вне самого объекта, а "символ" age, прям в объекте. по сути это же одно и то же, но почему результаты разные?
Потому что Symbol(<имя>) - создание нового символа. Чтобы получить значение по сиволу, надо иметь на руках ссылку на этот сиvвол. Из документации: Symbol("foo") === Symbol("foo"); // false