I'm guessing now, but this makes me think that the Windows cannot find it's files on the C: drive. When Windows boots, it will boot off the "boot" partition that the BIOS/UEFI started the boot process on. After drivers are loaded and some init done, Windows needs to load files from the the partition it has mounted as C:.
When you boot XP on the new drive, it may be mounting the XP partition as non-C: because it's finding it for the first time or because it saw it prior to you capturing the image from the old drive and assigned a non-C: drive letter.