Вы предполагаете, что вкладка .NET означает GAC, но это не так. Это означает установленные сборки, которые могут быть или не быть в GAC. Некоторые установки находятся в разделе Program Files, и эти сборки затем отображаются на вкладке .NET.
Когда вы добавляете ссылку на проект (не обращайте внимания на проекты веб-сайтов, поскольку они являются аномалией дочерних ублюдков и нуждаются в DIAF), среда выполнения .NET обнаружит эту сборку с помощью каскадного поиска, который начинается в каталоге исполняемых файлов, проверяет переменная среды PATH и заканчивается в GAC. У меня нет ссылки, но есть по крайней мере одна хорошая статья на MSDN, которая конкретно объясняет это.
Выше может показаться, что вышеприведенное напрямую не коррелирует, но в том смысле, что когда вы разрабатываете, вы можете сделать ссылку на сборку где-нибудь на вашем компьютере для разработки, но затем, когда вы распространяете свое приложение на другой компьютер для производственное использование, эта сборка не обязательно должна быть в том же месте, что и на вашей машине для разработки. Когда вы разрабатываете, вы можете иметь сборку локальную или в Program Files, но затем на другом компьютере, если эта сборка находится в GAC, тогда ваша программа должна просто работать.
(Обычно при установке SDK установщик будет достаточно умен, чтобы создать записи реестра, необходимые для отображения DLL на вкладке .NET. Ваш пример платформы XNA может сводиться к установке пакета времени выполнения вместо SDK или что-то.)
Надеюсь, это поможет.