Ouch!

I'm probably the worst person you could ask for such a thing - I think an actual step-by-step guide by me would be larger than is permitted in a single post Sandwich

That and I'm not overly familiar with Ubuntu's installer process...
You'd be better off researching the installer stuff yourself - I can tell you roughly what you need to have happen, but you'd have to figure out the 'How' part.
For a GRUB-setup where you can remove the other drive, you'll need a small (Say 2-10MB) partition on the primary boot HD to put the other half of GRUB (The first half goes into your boot drive's MBR) and the Linux kernel so that it'll still work when you take the 2nd HD out.
This partition should be formatted as a Linux ext2 filesystem drive and be mounted in your final installation as "/boot"
The best place for this is at the Beginning of your boot drive, but unfortunately I've just realised that this may not be possible for you to do without messing up Windows XP's bootloader...
However, assuming you have a BIOS that doesn't have the Cant-Boot-Past-Disk-Cylinder-1024 problem, you should be able to get away with shrinking your windows partition a tiny bit and tacking /boot on the end of it instead of the beginning so your partiton table would look something like:
Disk HD-A:
Partition - Mountpoint - Format - Size
hda1 - <Windows C:> - NTFS/Whatever - [Lots]
hda2 - /boot - ext2 - 20MB
I think for you, getting the partitions sorted out will be the most delicate part - Once that's done you can screw up and re-install as much as you want as long as you preserve the boot setup.
During the Ubuntu install, you'd configure the partitions so that /boot goes in that little niche you made on HDA, and have Ubuntu configure the freespace on HDB automatically.
I think from there the rest is up to you...
Note - Two things to do before you do *ANYTHING*:
1) Make a backup, or better yet a bootable ghost-image of your current system (before new HD gets out in) so you have a safety net.
2) Learn how to use the Windows XP Recovery Console - It's accessible by booting off the WindowsXP install CD; This way, if anything goes tits up you can boot into that and use the ?fixmbr? command to get the Windows XP bootloader back as the default.
Appendix (Don't read this! Seriously.)
Just to confuse and scare you more, this is what my GRUB.conf looks like for my ludicrously complicated drive setup:
#Default to 1st title section (Slacky!) ; Autoselect after 10 seconds
default=0
timeout=10
#GRUB Boot Menu entries
#0) Load Slackware!
title Slackware Linux
#Tell Grub where to look for it's stuff (HDA1 /boot)
root (hd0,0)
#Tell grub to boot the named kernel and use the specified root partiton
kernel /bzImage-2.4.25-cy2 root=/dev/hdc1
#1) Chain to Win2k bootloader
title Windows
#Set the FAT16 C: drive to be the root (Notenotenote! This is where the Windows 2000 bootloader is! Not hdb1!!) and boot it
rootnoverify (hd0,1)
makeactive
chainloader +1
Luckily, Ubuntu should configure all this for you so you'll likely never need to look at it

And here's my partiton table

HDA
hda1 - /boot - ext2 - 20MB
hda2 - C: - FAT16 - 2GB (DOS 6.22, Win2k and 98 boot drive)
hda5* - D: - FAT32 - 10GB (Windows 98SE)
hda6 - E: - FAT32 - 15GB
hda7 - F: - FAT32 - 15GB
hda8 - G: - FAT32 - 35GB
HDB
hdb1 - W: - NTFS - 159GB (Windows 2000 SP4)
hdb2 - <LinuxSwap> - linuxswap - 1GB
HDC
hdc1 - / - ext3 - 20GB (Slackware Linux)
hdc2 - /usr - ext3 - 30GB
hdc3 - /var - ext3 - 10GB
hdc4 - /home - ext3 - 100GB