A ver, por partes:
Crear/destruir procesos siempre es más costoso que congelar/despertar, porque se tiene que liberar memoria, reasignarla, añadirle un número de ID al proceso, reconfigurar el árbol de procesos... No he hecho pruebas exahustivas, pero calculo que hay un 10% de diferencia en rendimiento. La comodidad depende de cómo te plantées el código.
¿Un proceso se puede congelar a sí mismo? Sí, y dormirse, y matarse, e incluso a su propio árbol con las señales _TREE. Lo que no puede es despertarse sólo ¿por qué?, porque tendría que ejecutar la función "signal(id,s_wakeup)", y cuando está dormido/congelado, no ejecuta código ninguno.
No puedes tener una región más grande que la pantalla, es imposible por definición. Puedes tener un mapa, un scroll (tileado o no) o un escenario en general más grande, pero no una región: una región es una parte rectangular de pantalla.
BREAK no mata un proceso, sólo sale del bucle actual. Un proceso puede morir si:
-Termina de ejecutar su código.
-Otro proceso lo mata con una señal (S_KILL, LET_ME_ALONE(),...).
Una vez que acaba no quedan residuos. Lo que queda en memoria son los recursos que haya cargado, la memoria que se haya reservado con ALLOC, los ficheros que se hayan abierto... Por eso es recomendable:
-Que el proceso termine sólo, de forma que sus últimas instrucciones sea la descarga de recursos.
-Si es eliminado desde fuera, usar ON EXIT para liberar los recursos antes de terminar.
-Preferiblemente, que los recursos se carguen desde un proceso de control o desde el padre de todos los que vayan a usarlo, y se pasen como parámetro, de forma que sea el mismo el que los libere (podríamos llamarlo "principio de unificación de manejo de recursos"

).