Как компилятор понимает, что первую функцию, которую нужно вызвать, будет именно Main()?
В книге CLR via C# - Программирование на платформе Microsoft.NET Framework 4.5 на языке C#. 4-е издание на странице 37 в главе Исполнение кода сборки написано: 
Далее основной поток вызывает определенный в библиотеке MSCorEE.dll метод, который инициализирует CLR, загружает сборку EXE, а затем вызывает ее метод Main, в котором содержится точка входа. На этом процедура запуска управляемого приложения считается завершенной.

Так же написано в документации Microsoft, что вызывается именно метод Main, если в качестве параметра компилятора -main не передать название другого метода.

Документация Microsoft:
Main() и аргументы командной строки
Запуск приложения
Мой ответ самый простой, мне это безразлично. Ну надо так, ну и ладно. Если, например, понимание работы GC ещё влияет на что-то, то это нет. И даже не интересно.