I've 2 hard disks. I've installed Ubuntu on the HDA(0), but there are plenty of spaces. But On the HDA(0) there is only one partition.
My question
How can I edit / create another partition on HDA(0) to install Windows XP on the 2nd partition ?
How can I install Windows XP on HDA(1) and still be able to boot in Windows XP or Ubuntu ?
First you should use a live system to partition the disk with Gparted (it is included in Ubuntu live) and create a NTFS partition. Remember to reserve the first partition to Windows (some versions of it don't recognize NTFS partitions if there's something else before them).
Then you should install Windows in that partition and, in the end, you have to recover GRUB, as described here: https://help.ubuntu.com/community/RecoveringUbuntuAfterInstallingWindows
You can use gparted to shrink partitions.
http://gparted.sourceforge.net/download.php
After you installed windows, you can use EasyBCD to edit the Windows boot manager for that it gives you the option to load Linux.
http://neosmart.net/EasyBCD/
I know it works, I have done it once.
If you put grub in the MBR, then you will get into trouble when some settings change (e.g. the kernel renames the /dev/sda1 to /dev/hda1 etc., and then it will boot neither Windows nor Linux.
I don't know whether you still need to move grub from the MBR to to /dev/hda1 or wherever your primary Linux partition is, but I think it works without that as well.
I would install a Windows driver that enables windows to read the ext3/4 fs. I don't know whether something for ext4 exsts already, but ext3 was definitely supported, in order to access data on the Linux partition on Windows.