Hola otra vez:
onload es el evento de inicio de la página y onunload el del fin.
Las variables que tengas en cualquier script o en los formularios pueden perderse con los enlaces a #, dependiendo de la inicialización de la página. Entonces, a pesar de que los dos ejemplos que propones hacen lo mismo, el que tiene "#" también refresca la página.
La verdad es que aún me faltan saber muchas cosas de las ventanas, por ejemplo no es lo mismo:
var nuevaVentana = window.open(...
que
window.open("", "nuevaVentana"...
Con el primer ejemplo puedes poner nuevaVentana.close(), pero con el segundo no estoy seguro si es "window.nuevaVentana" o "document.frames.nuevaVentana"...
Pero no te voy a liar, porque yo mismo no lo tengo claro.
Saludos