The distros I have seen tend to place every driver they have on the hard drive. The distros that tend to be easier to use (Ubuntu, Mandriva for instance) will autodetect hardware on startup and will both load the relevant drivers AND adjust the relevant configuration files (I find this to be often quite annoying). This makes it simple enough to move the drive to a different machine; the distro will handle the details.
The one place you'll have any difficulties will be with the bootloader. If you install the system on a USB HD, then move that HD into the laptop, the pointers in menu.lst will be wrong and grub won't start.
The way you handle this is to do your install to the USB drive, make sure grub is installed on that drive, then manually edit the file /mountpoint/boot/grub/menu.lst (you might also need to edit /mountpoint/boot/grub/device.map - we'll get to that in a minute). In this example, /mountpoint is the place in your system where the usb drive is mounted, of course.
The menu.lst file may have multiple entries, pointing to your currently running linux installation as well as your new installation. You would want to completely delete the references to your current running installation.
Let us assume that your USB 2.5" drive is a PATA drive. In the usb case, it will be known on your system as, say, sdc (this assumes your system has two other drives, either SCSI or SATA, that are known respectively as sda and sdb). Therefore, your USB drive is the third drive in your system. In grub-speak, it will be known as drive 2 because grub starts counting at zero, thus sda is drive 0.
Since your 2.5" drive is PATA, it will become known as hda when it is installed in your laptop. Further, since your laptop will have only one drive, it will be drive 0 in grub-speak.
So, when you edit menu.lst, you will find lines that looks something like this:
Code:
title linux
kernel (hd2,0)/boot/vmlinuz BOOT_IMAGE=linux root=/dev/sdc1 devfs=mount hda=ide-cd hdb=ide-cd acpi=off resume=/dev/sdc2
initrd (hd2,0)/boot/initrd.img
These lines assume your linux installation is in the first partition on the usb drive, with swap in the second partition on that drive (the resume= option).
Given that you have configured your drive that way, you would change these lines like this:
Code:
title linux
kernel (hd0,0)/boot/vmlinuz BOOT_IMAGE=linux root=/dev/hda1 devfs=mount hda=ide-cd hdb=ide-cd acpi=off resume=/dev/hda2
initrd (hd0,0)/boot/initrd.img
After you make this change and save it on the USB drive, you then should take a look at the device.map file (if it exists). It should have only one line in it, and that line should say:
When you change device.map to say just this, then save it, your drive should be ready to go into the laptop. Do whatever BIOS things are required to mark it as a boot device, and you should be good to go.
When the system comes up, if there are driver issues you'll know about it and can do the appropriate things then.