Two functions with the same name means one overwrites the other. The cheap answer is to rename one of the functions; the gentrified answer is to have just one function that cen be passed data:
<!doctype html5>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function open_win()
{
var len = arguments.length,
offset = 50;
for( var i = 0; i < len; i++, offset += 100 )
{
window.open( arguments[ i ], "w"+i, "top="+ offset +", left="+ offset +",width=" +(screen.width/2)+",height="+(screen.height/2) );
}
}
</script>
</head>
<body>
<form>
<input type=button value="Link 1" onclick="open_win('http://www.facebook.com/','http://www.google.com/')">
<input type=button value="Link 2" onclick="open_win('http://www.yahoo.com/', 'http://www.msn.com/')">
</form>
</body>
</html>