Is reducing maximum processor usage in Power Options safe?

The option in question is not under-clocking; Windows does not manipulate the CPU or motherboard or multipliers or FSB or anything. The option you are inquiring about is simply a factor that is used during task-scheduling.

When processes run, the Windows task-scheduler allocates a specific number of CPU cycles to different processes and switches back and forth to enable preemptive multitasking. Normally, it assigns as many CPU cycles as are available in order to run everything as fast as possible. If there are free cycles, it lets the program run, if not, it puts the process in a queue and checks to see if there is another program which has used up its allotment for the current “quantum” (or “time-slice”) and should be moved to the back of the line.

Not surprisingly, running the CPU at 100% capacity for a while will heat it up, and this can be undesirable. What Windows lets you do is to assign a limit to how much CPU capacity is usable.

In this case, when processes request CPU time, the scheduler works exactly as before, except that it uses the limit specified in its calculations instead of 100%. As a result, there will be CPU cycles that remain unused, which allows the CPU to remain at a lower temperature.

As a simplified and contrived example, imagine that this was the pseudo-code for the scheduling algorithm (with comments marked by ;):

; function to calculate total CPU cycles used by all processes
calc-total-used:
  used-total = 0                             ; initialize counter to 0
  for each program:                          ; loop through each running process
    used-total = used-total + process-used   ; add CPU cycles of each process to counter
  return used-total as percentage            ; convert to percent and return value

; main scheduling control, check if free cycles available
if (calc-total-used < max-percent)           ; calc used %, see if less than max allowed
  then run program                           ; if so, run the program
  else:                                      ; if not, try to free some up
    add program to queue                     ; if not, add it to the queue
    …                                        ; check if any process are out of cycles

Notice how the scheduling calculation uses a max-percent variable instead of hard-coding 100%. This way, if you set it lower than 100%, it will only allow a program to run if the current usage is less than 100%, which of course means that any CPU cycles between max-percent above that will not be used.

Therefore, this option cannot harm the CPU; it is no different than simply not running any programs and just idling the system (you have likely already had your system idling near 0% CPU load many times).