You're probably doing something wrong.
Codec settings don't affect CPU load at all. No matter what settings you use, it will use entire computational power available to finish as soon as possible. Because unused resources are wasted resources - if you're going to use, say, only 50% of your CPU's power, you could just as well use half as powerful CPU.
I guess you're having a problem with other programs being unresponsive while encoding is in progress. The standard solution to this problem is juggling with priority settings. In Windows, you should have a look at scheduling priorities. You can try them by right-clicking a process in Task Manager and choosing something from the Set priority menu (just don't use Realtime, it can block a system completely). Set higher priority for your main app and lower one for background process. (This can be done programmatically too.)
In Linux process niceness plays a similar role. The lower niceness a process has, the more CPU time it is assigned. You can set higher niceness (ie. lower priority) from any user's context. Lowering niceness can be done only by root.
Or if you're using Linux and you just want to set a hard limit on CPU usage, cgroups may be the right solution for you. I'm not aware of any similar mechanisms in Windows.