Basically you mount the new HDD as second/third/... disk, copy and then
remove the old one and mount the new one as first disk. AFAIK different
partition sizes are not a problem.
Yes, it can be done. Most of the drive copy programs
can do that as long as you are careful to unplug the
original drive before the first boot after the copy.
Once XP has booted off the new drive and has
rebooted once it has noticed that the physical drive has
changed, you can plug the original drive back in again,
usually as a slave, and format it and use it for data etc.