el uso de variables globales, te puede provocar mas problemas que beneficios.
Hay varias formas de pasar variables entre forms. uno de los metodos mas seguros y limpios, es el uso de propertys.
en el form "hijo" las declaras, y en el form "padre", al momento de instanciar el form "hijo" le asignas las variables. En VS, el intelligensense te aytuda al indicarte cuales son las variables de tu form "hijo".
respecto de tu segunda pregunta, para que el form "padre" quede inhabilitado, debes ejecutar el siguiente codigo
Código:
frm_MiFormHijo formHijo = new frm_MiFormHijo();
formHijo.psParametro1 = sValor1;
formHijo.psParametro2 = sValor2;
formHijo.psParametro3 = sValor3;
formHijo.ShowDialog();
saludos
plch