Hola:
Si quieres pasar datos a una ventana, puedes hacerlo siempre que lo hagas desde donde la has abierto:
ventana = window.open("destino.php");
...
ventana.document.forms.el_formulario.el_campo.valu e = "papi";
Pero esta no es una forma aconsejable porque si envías información a una página que aún no se ha cargado seguramente te devuelva un error, por lo que pienso que el formulario es más adecuado (es mi opinión)
Y con un formulario puedes enviar en distintos campos los datos necesarios para la respuesta (nombre del formulario y del campo destino)... luego envías los valores desde el hijo con opener y los campos variables entrecorchetados.
Incluso puede recibir el resultado otro formulario o cualquier tipo de variable, atributo...
<form name="receptor" ... >
<input type="text" name="empleado" />
... <!-- recibirá el empleado el formulario=receptor y campo empleado... -->
</form>
<form action="hijo.php"... >
<input type="hidden" name="formulario" value="receptor" />
<input type="hidden" name="campo" value="empleado" />
...
</form>
Suponiendo que abras el hijo con el segundo formulario, pasas el dato al padre con la siguiente instrucción:
opener.document.forms["<?=$_GET["formulario"];?>"]["<?=$_GET["campo"];?>"].value = dato_obtenido();
Te paso una página hecha con iframes que se comunican con su padre (en este caso se usa parent en vez de opener):
gradientes
En la página cada selector de color es un iframe (la misma página con distintos parámetros)
Saludos