That's exactly what I'm suggesting.
Let me do my best to explain the MBR thing.
You have a big "file."
Code:
.============================================.
| |
| |
| |
| |
| |
| |
| |
| |
.============================================.
At first it's blank (all zeroes).
When XP was installed (by you, the OEM, whoever), it wrote the necessary code to the MBR:
Code:
.============================================.
|01010101000111001100011010111001101010100101|
|10011100011101010010001001111011011110010011|
|010111100110101110001\0 |
| |
| |
| |
| |
| |
.============================================.
See that last bit? It tells it to stop reading here, and go on to the next section (the partition table).
When you installed Vista it overwrote the XP bootloader - but it was longer than it too.
In the end, you had two "\0" marks, when you boot normally, it reads from the beginning and stops at the first marke.
When you boot from CD or whatever, it skips the first mark: but the second is still there, so it reads it. In your case that happened to be the Vista bootloader.