Ursprünglich war vom LaTeX-Team wohl gedacht, dass die Reihenfolge von Pakete keine Rolle spielen soll. Leider hat sich das aber im Laufe der Jahre als Wunschdenken herausgestellt. Zwar gäbe es beispielsweise mit dem Paket [`scrlfile`](http://www.ctan.org/pkg/scrlfile) durchaus die Möglichkeit, dass Paketautoren auch auf das spätere Laden von anderen Paketen noch reagieren könnten, in der Realität machen davon aber nur sehr wenige Paketautoren Gebrauch. Stattdessen schreiben sie abhängigen Code so, dass er nur dann ausgeführt wird, wenn das Paket, auf das sie reagieren möchten, bereits geladen ist. Dadurch entstehen Abhängigkeiten, die der Anwender tatsächlich nicht selbst erkennen kann. Solche Abhängigkeiten sollten aber in der Anleitung vermerkt sein.
Noch komplizierter wird es, wenn Abhängigkeiten existieren, von denen nicht einmal die Paketautoren etwas wissen, wissen und die deshalb auch nicht in den Paketanleitungen vermerkt sind. Diese findet man eigentlich nur beim Auftreten konkreter Probleme. Dazu genügt es auch nicht, ein einfaches Minimalbeispiel zu erstellen, man muss dann als weiteren Schritt auch noch die Paketreihenfolgen vertauschen.
vertauschen. Es kann übrigens sinnvoll sein, solche Abhängigkeiten dann an die zuständigen Paketautoren zu melden, damit diese in der Anleitung ggf. darauf hinweisen können.
Es gibt auch Abhängigkeiten, die dadurch entstehen, dass Pakete von Paketen mit bestimmten Optionen geladen werden. Diese erkennt man einfach an `option clash`-Meldungen. Bei solchen Meldungen ist die erste Idee immer, das Paket nicht selbst zu laden. Fehlen dann Optionen kann man sie entweder als globale Optionen setzen (funktioniert nicht für alle Optionen) oder per `\PassOptionsToPackage` bevor das Paket indirekt geladen wird, also beispielsweise noch vor `\documentclass`.
Allgemeine Faustregeln sind schwierig, weil es immer Ausnahmen gibt. So sollte beispielsweise `hyperref` immer so spät wie möglich geladen werden. Allerdings sind im `README` zu `hyperref` auch Ausnahmen vermerkt, für die das nicht genügt bzw. nicht zutrifft.
zutrifft.
Lediglich für ein Paket kann man eine definitive Aussage treffen: Das Paket [`latexrelease`](http://www.ctan.org/pkg/latexrelease) sollte immer als allererstes noch vor `\documentclass` geladen werden, wenn man es denn verwendet. Das liegt daran, dass man über das Paket, Einstellungen des LaTeX-Kerns vornimmt, die für alle Klassen und Pakete einheitlich gelten sollten.
Abhängigkeiten der Art, wie Du sie genannt hast, also Sprache für Mathematik vor Grafik sind mir allerdings nicht bekannt.
Da `epstopdf` die Arbeitsweise von `graphics` bzw. `graphicx` modifiziert, würde ich es persönlich unmittelbar danach laden.