Today's GOTD, Romantic Photo, has been reported to throw an error in XP: "The procedure entry point QueryFullProcessImageNAmeW could not be located in the dynamic link library KERNEL 32.dll" The program went looking for a place that does not exist within the version of Kernel32.dll that's in XP. Why did it look for something that wasn't there? Because it is there in later versions of Windows. And it could likely be fixed so that it was compatible with XP, simply by not looking for something that isn't there in XP, & using something that is. So why didn't the developer do that?...
Well... it probably would take a little bit of work to find out what part of their original code caused that call to be made. When a dev uses Microsoft's Visual Studio for example, they type in their code &/or use included bits of code, & VS compiles it, turns their text into the files that Windows will use when it runs that app. So the dev didn't say explicitly Look For This Certain Entry Point, but it likely happened when their development software compiled the code.
Why it was added could be because whomever wrote that development software figured it's there, so why not use it, or they could have added it to discourage the use of XP. Your call. Fact remains that more than plenty of software ran & runs on older versions of Windows, like XP & Vista, so making calls that are incompatible with those older versions in cases like this is most likely perfectly avoidable.
It could mean using other development tools, all or in part, &/or it could mean figuring out different ways to make their program work -- some of the code they wrote could have triggered the cause of the error, so they'd have to find out what part(s) of their code acted as the trigger, & avoid that code. And it can get more involved because the kernel32 file isn't the only one that this sort of thing can happen with -- Google on "procedure entry point" [w/out quotes] & you'll find several discussions, many related to just this sort of thing.
For the dev to do that extra work they need some sort of incentive -- for many if not most, $ would work. ;) If enough people contacted the dev for Romantic Photo for example, saying they'd likely buy the app if only it would run on XP, that *might* just do it. Often you can vote with your wallet, not buying & supporting products that don't work etc., but I don't think in this situation that would work -- you have to counter the widespread perception that those still running XP won't spend money.