Apache uses port 80 and port 443 and so does IIS.
Apache can't use port 80 and 443 if IIS has started and is listening on those ports, so Apache can't start.and the same applies in reverse, so it depends when your computer boots which starts first.
Nothing you can do about that unless you change the ports of IIS (difficult registry hack) or you change the ports in Apache.
A better solution all round is to disable IIS.
If you do not want to use IIS and why if you have XAMPP and Apache, then you can disable IIS so that Apache will always work without port conflicts.
Here is a post that will help you do this in Vista:viewtopic.php?p=134260#p134260
You can ignore the UAC instructions (User Account Control a MS pesky PC nanny) if you wish or make a note of that entry for future reference if you need more control over your Vista.
If you want to activate the Super Admin account (full control of your Vista) then see this site:http://www.winvistaclub.com/t12.html
Also there is this web site that also may help with disabling IIS.how to turn off iis 7
Once you have disabled IIS, reboot, then you will not have to do anything with Apache as it should start up without issue - let me know if it does still give issues.
If you think that all this is over your head then take a deep breath and read this post and it's content a few times with the required screens open and see if it all jells for you.
Please let me know back how this pans out for your issue.
Good luck and my best wishes.