buenas,
fíjate que estabas creando dos variables, aunque el mismo nombre, de alcances distintos.
var links dentro de la función es una variable local. desde el exterior de dicha función, la variable no existe. sin embargo, en onclick estas creando otra variable. en este caso global. cuando invocas openWin, la función declara la variable iniciandola con valor undefined. entonces, cuando escribe en la nueva ventana debe imprimir undefined. la función no puede tomar la otra variable (la global) debido al mecanismo de resolución de conflicto. es un mecanismo donde javascript busca los identificadores/tokens en un orden devolviendo el primero que encuentre. en este caso, al existir el identificador
links dentro de la función, entonces devuelve este. si no hubiera existido, entonces hubiera tomado el declado en onclick. recuerda, la variable inicializada en onclick es global porque no le procede la declaración
var.