Почему к элементу в JS можно обратиться по id напрямую?
Работает это благодаря коллекции document.all. webkit и Presto поддерживали её всегда. В какой-то момент эта коллекция не поддерживалась в Gecko, и по какой причине разработчики вернули поддержку этого жуткого наследства от MS — не понимаю.
Вот что говорится про неё на MDN:Provides access to all elements with an id. This is a legacy non-standard interface, you should use the Document.getElementById() method instead.
Почитать можно в документации к JS, самое начало "Объектная модель DOM" :)