Hallo Roberto,
wegen eines Buches zu C und AVR kann auch ich nicht weiterhelfen. Allerdings ist der von izaseba angegebene Link doch eigendlich dann genau richtig um mal einen kompletten Überblick zu erhalten.

Zu deiner Frage: "Was passiert, wenn ich es nicht so mache?":
Als Vermutung kann ich nur annehmen, dass die Funktion pgm_read_byte eben deshalb notwendig ist, da ja schon der Assembler-Befehl nun mal anders ist wenn im RAM bzw. im FLASH Daten gelesen werden sollen. Somit hat da irgendjemand die Funktion pgm_read_byte() geschrieben damit du es leichter hast.

Was izaseba mit den 30 Befehlen von C meint, ist natürlich nur das reine 'Grundgerüst'. Je nachdem wie viele Lib's du dazu holst wächst das was du zur Zeit als Befehl ansieht 'etwas' an. Vielleicht hilft der Begriff Unterfunktion oder Subfunction aus Basic eher um einen Vergleich zu den aus Lib's kommenden 'Befehlen' zu erklären.
Im allgemeinen musst du ein #include in deinen Sourcen aufnehmen. Alle in diesem Include declarierten 'Funktionen' sind z.B. solche Unterfunktionen. Es bleibt also beim "Kernighan und Ritchie" von izaseba.

Beim Compiler ist es fast egal welchen man nimmt, solange der auch Code für die gewünschte 'Zielmaschine' (also ATmega) produzieren kann.

P.S.: Tutorial lesen ist immer gut. Nicht alles verstehen, heißt eigendlich: Ich habe einen Teil verstanden. Das ist Erfolg