Może brzydko robię, że robię reklamę swojego projektu, ale proszę: https://github.com/qwercik/bfOS
To jest bootowalny (działający bez osobnego systemu) interpreter brainfucka. Dołączyłem tam narzędzie generujące obraz dyskietki, po której zbootowaniu wykonuje się napisany przez użytkownika kod.
Kod chyba nie jest aż taki zły, może ma jakąś wartość edukacyjną
A co do twoich pytań to już tłumaczę.
Generalnie, kody systemów operacyjnych, BIOSów, (U)EFI pisze się w C (czasem pewnie C++). Ale trzeba pamiętać, że C był projektowany jako język przenośny. Miał działać na komputerze z archtekturą X, na komputerze z architekturą Y - pewnie nawet z różnymi systemami. Architektury takie jak ARM, czy x86 różnią się między sobą, więc aby skomunikować się bezpośrednio ze sprzętem, na obu architekturach robi się to inaczej. Więc chcąc dokonywać takich rzeczy, trzeba się posłużyć językiem asemblera.
W języku asemblera pisze się też (zazwyczaj) wczesne partie bootloadera.
P.S.
Język asemblera nie jest tak do końca uzależniony od systemu - od systemu uzależnione są wywoływane przez Ciebie w twoim kodzie funkcje, czy przerwania. W linku który podałeś, wywoływane są funkcje WinAPI. Pisząc swój system, nie masz takich funkcji - musisz je napisać samodzielnie
P.P.S.
A jakby Cię jakimś cudem zaciekawił mój śmieszny projekcik, to zapraszam tutaj: https://github.com/qwercik/brainfuckOS
To wersja druga, działająca w trybie chronionym i jeśli się uda, to będzie lepsza, z większymi możliwościami i tak dalej.