Frage do-while

Bekomme ich irgendwelche Probleme wenn ich aus der Schleife eine neue Funktion aufrufe und aus der neuen wieder zurück springe?

Nein.
Mit "aus der Schleife" meinst du, dass du innerhalb von void loop() { /* d.h. hier irgendwo */ }
eine Funktion aufrufst, wie z.B. MainMenu();

Das Zurückspringen geschieht von allein am Ende, oder sobald der Befehl return; aufgeführt wird. Man landet stets hinter dem Aufruf der Funktion, und der Speicherzustand (Stack) ist wieder so wie vorher.
pylons Kommentar ist sicher nicht so furchterregend gemeint.

Innerhalb von MainMenu kannst du durchaus weitere Unterfunktionen aufrufen. Das ist ja Sinn der Sache.
Schwierig wird es nur, wenn du wieder MainMenu() selbst aufrufst. Das geht nur selten gut, denn unendliche Schachtelungstiefe geht natürlich nicht.

loop() ist übrigens selbst eine normale Funktion, mit dem einzigen Unterschied, dass die von der Arduino IDE drumherum gebaute Umgebung so funktioniert, dass loop() auf jeden Fall existieren muss und immer wieder neu aufgerufen wird.