Die meisten bauen als erstes eine Shell, die halt Eingaben entgegennimmt und dann nutzlose Befehle ausführt (weil nützliche beim aktuellen Stand ja noch nicht gehen). So Sachen wie "echo", "version", "help" und "exit". Kann man machen, wenn man will.
Deinen Ansatz finde ich aber auch gut. Wenn du dann einen Plattentreiber und einen Dateisystemtreiber hast (read-only reicht ja für den Anfang und das geht recht zügig), kannst du immer noch eine Shell anfangen und dann gleich Sachen wie "ls" oder "cd" einbauen. Das lohnt sich dann auch halbwegs.
Für IDE brauchst du nicht zwingend PCI, IDE an sich ist nämlich älter und damals noch mit ISA benutzt worden. Für dich heißt das in erster Linie, dass du den Controller an festen I/O-Ports ansprechen kannst und die Daten dann auch über diese Ports übertragen kannst (also PIO-Modus). Später ist DMA dazugekommen und das geht dann nur über ein PCI-Gerät, aber zum einen kannst du das vorerst ignorieren, und zum anderen ist es auch nicht schwer, PCI-Geräte zu erkennen, d.h. das kannst du ohne weiteres gleich als nächsten Schritt machen, wenn dir danach ist. ACPI brauchst du schon gar nicht. Du kannst dich also direkt auf IDE stürzen.
Ich würde dir empfehlen, für den Anfang eine der älteren Spezifikationen zu benutzen, wo noch alles in einem Dokument steht, und ich es teilweise übersichtlicher finde. Du kannst dir zum Beispiel ATA/ATAPI-5 hernehmen.
Wenn du für das Dateisystem FAT nimmst, kommt es auf deine Imagegröße an, was für eine Variante du bekommst (genauer gesagt auf die Anzahl der Cluster, und weil man die Clustergröße in einem gewissen Bereich selber festlegen kannst, hast du etwas Spielraum). Für ein Plattenimage in der für ein Hobby-OS typischen Größe (mehr als 32 MB, aber nicht mehrere GB) dürfte das auf FAT16 rauslaufen. Das erspart dir FAT12, was ein bisschen eklig ist (weil 12 halt bedeutet, dass man mit halben Bytes arbeiten muss).