Im Prinzip ist es ganz einfach.
Der Compiler arbeitet ja linear, also was er zuerst im Code findet, bei der
DPR angefangen, das wird auch zuerst eingebunden/ausgeführt.
Bindet deine
Unit aber eine andere
Unit ein (im Interface), dann wird die andere
Unit vorher noch schnell compiliert/eingebunden, und deine
Unit erst, wenn alles im Interface vorhanden ist.
Nur was in der Implementation eingebunden wurde, da kann es passieren, dass diese Units erst nach Deiner geladen werden.
Alles im Interface kommt
immer vor der aufrufenden
Unit, bzw. deine
Unit kommt
immer nach dem dran, was sie dort eingebunden hat.