Frage do-while

Bleibt da irgendwo im Speicher was von den nicht beendeten Schleifen hängen?

Von den Schleifen nicht, aber von den Sub-Routinen: die Rücksprungadresse auf dem Stack. Wenn Du dort wild herumspringst baut sich der Stack langsam (oder auch etwas schneller) auf und Dir (oder besser Deinem Arduino) wird bald der Speicher (RAM) ausgehen.

While(unwichtig da nicht benutzt)

Das "unwichtig, da nicht benutzt" kann ich nicht nachvollziehen, das wird sehr wohl benutzt.

Was Du wahrscheinlich brauchst, ist eine State Machine. Das ist eigentlich nichts mehr als eine Variable, die den aktuellen Status festhält. In der Hauptschleife (loop) machst Du dann je nach Wert dieser Variable andere Sachen. Einige davon können ein Statuswechsel, als ein Verändern dieses Werts sein.

Pseudocode:

uint8_t status = 0;
loop() {
  if (status == 0) {
    // könnte zum Beispiel das Hauptmenü sein
    if (buttonpress == 2) {
      status = 1;
    }
  } else if (status == 1) {
    // könnte das Untermenü sein
    if (buttonpress == 1) {
      status = 0; // zurück zum Hauptmenü
    }
  }
}