1. FAT16 und FAT32 unterscheiden sich in recht wenigen Details. Diese kann man ebenfalls in dem FAT Dokument von Microsoft nachlesen. Man müsste zwar für das auslesen der FAT-Einträge wohl neue Funktionen schreiben, aber einiges bleibt auch gleich. Zum Beispiel die Directory-Einträge. Jedoch kann bei FAT32 das Root-Directory eine variable Größe haben.
2. Man sollte sich gut überlegen ob der Bootloader auch andere Systeme laden können soll, oder speziell nur das eigene OS. Wenn der Loader auch noch andere Systeme laden soll, dann sollte der Loader eigentlich wirklich nichts anderes machen als den Kernel in den Speicher laden und diesen starten. Alles weitere (PM Jump, GDT usw sollte der Kernel machen).
3. Es kommt ganz auf das System an. Siehe Punkt 2. Wenn ein System wenigstens halbwegs durchdacht ist, macht es so dinge wie PM-Jump usw erst im Kernel. Damit behält man sich dann auch vor das OS mit anderen Loadern laden zu können.