Hola,
Deberías asegurarte, antes de ejecutar el método "Show" de "form2", de que el propio "form2" existe. Esto puedes hacerlo tal que así:
Código Delphi
[-]
if not Assigned(form2) then
form2 := TForm2.Create(Self);
form2.Show();
Empero, por lo que haces con "form1", creo que acaso te interesaría más usar el método "ShowModal" en lugar de "Show". Siendo así te sería más sencillo incluso hacerte cargo de la variable "form2", incluso no te sería necesario:
Código Delphi
[-]
with TForm2.Create(Self) do
begin
try
ShowModal();
finally
Free;
end;
end;