This can be useful if you don't want a multithreaded application to take all the CPU time (for example if you're transcoding a video for use on a portable player and just setting the priority to low is not enough).
In most other cases it's not necessarily a good idea though. Setting an application to only one core will mean it won't be using the full power available and will run much slower (nitpick: this only applies to multithreaded applications, but since most of them are these days, it's better to just let the system manage those itself).
Most of the details you probably don't want to know about are on this totally unreadable wikipedia page.