Hi Peteron, I also have w520 and run mostly linux but keep a small Win7 partition in case I need to update bios or call support. I will give advice that is too complex for average user but hope it is useful here.
IMO you should stick with 64 bit linux on this machine. 32 bit Ubuntu works fine on 16GB W520 because of PAE but 64 bit has substantial architectural and performance advantages and hasn't had disadvantage for years.
My best tools for dual-boot preparation are Clonezilla-live CD for backups, and I like Kubuntu1204 for liveCD and Porteus for live USB linux (I am KDE fan). If you can figure out Clonezilla, it is a great way to backup system before you do the dangerous stuff with partition table.
When you have confirmed backup, you can resize the Win partition with one of the linux Parted tools. If you really want Win to be small, you can eliminate the pagefile and the hibernation file; a 16 GB system won't be paging (and you wouldn't want to page gigabytes anyway). Hibernation file is as big as RAM, but not needed if you configure Win to use sleep and shutdown instead. I have forgotten the order I did this in, but you want to configure Win to not use these features and then you can delete the files, saving many gigs. Once you have resized the Win partition, Windows will refuse to use it until Windows has checkdisk'ed it, this is tricky and I had to run the checkdisk on another windows system since windows will not boot before the partition has been confirmed clean.
Here's my partition table:
sda1 Primary ext4 22000
sda2 Boot Primary ext4 [kubu12] 22000
sda5 Logical swap 6500
sda6 Logical xfs 412000
sda4 Primary ntfs [Windows7_OS] 37000
The specifics of these sizes are not important, but this layout works well for me. You have 4 primary partitions, I make sda3 my extended partition, and I like to have several linux partitons so I can test new linux systems and do rotating upgrades (11.10 on one partition, 12.04 on the other). I give myself a swapfile, never seen linux hit it with so much memory. Also this partition order (primary, primary, extended, primary) was tricky to achieve; I used a combination of parted, cfdisk, and fdisk because they all have unique features. The old 'fdisk' has some bugs but it is the only one that is happy to reorder the partition table, a useful trick.
I put Win at the end of the disk because that's the slowest part on factory disk, probably 60MB/s rather than 100. 35G would be too small for this partition with paging and hibernation, but it's plenty for me:
$ df -h /mnt/sda4
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 35G 21G 15G 59% /mnt/sda4
Now for me there's one more trick. I also have the Intel 311 20G msata SSD in this box. I set the bios to boot off the SSD (second drive, /dev/sdb). I prepared it with a clone of the hard disk's Kubuntu partition, but I move big documentation files (man pages etc) to the spinning disk via symlinks. Also my home directories so I can store big stuff off the SSD, and also the /tmp directory since linux does write-back caching and also major read caching, so no speed loss. Here's the SSD's fstab:
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# flash disk is /dev/sdb2
UUID=123-456-abc / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
# move heavy writes and big crud to sytem mirror on sda1
UUID=543-210-def /mnt/spin ext4 errors=remount-ro 0 2
# swap is /dev/sda5
UUID=999-123-888 none swap sw 0 0
# bind mount these in normal place from spinner
/mnt/spin/home /home none rw,bind 0 2
/mnt/spin/tmp /tmp none rw,bind 0 2
# /mnt/space is /dev/sda6
UUID=867-530-911 /mnt/space xfs rw,user,noatime,nodiratime 0 2
With this setup, Kubuntu takes 4 gigs on the SSD, boots in 15 seconds, launches Eclipse 3X as fast as the disk based setup. Objectively, SSD's are a pretty minor win. The first time you do anything, it is usually sped up by about 30%, but it can be >100% on big operations. The second time you do anything linux has already cached the disk so you won't be disk bound. I don't spend a huge amount of time doing things the first time, but subjectively the snappiness of first time operations is impressive.
As for Ubuntu drivers for grafix and fingerprints, I don't know. Everything I use worked perfectly out of the box. Optimus stuff is tricky and loaded with compromises yet on the linux side. Discrete GFX (set in bios) works like normal Nvidia but makes the computer warmer and not silent, I use just integrated graphix.
I didn't mean to write a book here... I really like the W520, it is just a monster of a system. I have replaced all my personal servers with virtual machines, gotta love a laptop that can spin 6 full-speed disks and run a half dozen VM's without even audibly spinning the fan.