il problema è che se fai la dispose del form1 che chiama il form2 automaticamente vengono chiusi tutti e due.
Se chiudi il form padre elimini in automatico la variabile che gestisce il form figlio e quindi si chiude tutto.

quando chiudi il form 2 allora puoi chiudere il form1. Nel frattempo, se vuoi farlo sparire, puoi fare la hide per nasconderlo temporaneamente.