$file ist ein pointer auf eine geöffnete datei, und bei funktionen die mit hilfe dieser pointer daten lesen (hier fgets) wird dieser pointer vorwärts geschoben, so das beim nächsten aufruf der funktion ab dieser stelle weiter gelesen wird.
wenni ch mich recht erinnere liest fgets so wie es hier aufgerufen wird, die aktuelle zeile bis zum 200. Zeichen, oder wenn vorher ein EOL kommt bis zu diesen.
Stell dir vor das File ist ein Buch, und $File ist dein Finger, wenn fgets die sagt: "Gibt mir die nächste Zeile, aber nur bis zu 200 Zeichen" dann liest du dem fgets die Zeile bis zum 200. Zeichen vor, und wartest da mit deinem Finger bis dir wieder was gesagt wird.
In diesem Script wird dir immer wieder von fgets das selbe gesagt, und das bis du auf der letzten seite des buches bist. das sieht die Whileabrage dann an deinem Finger, und sagt dir du sollst das Buch zumachen ;-)
Grüße phx1024
P.S.: nit falsch verstehen wenn ich das so erkläre, ich verwende nur sehr gern analogien ;-)