The short general answer to basically all of that is yes.
The long answer is that modern processors have a range of options for idling and boosting, which they can adjust extremely rapidly as needed. They can run at a lower or higher frequency, shift C-states to use less power, park specific cores, leave some cores at lower speeds while boosting individual cores as needed, etc. The exact increments will vary from CPU to CPU and usually reflect adjustments to the clock multiplier, with 800 MHz being a fairly common minimum. Most of this is controlled automatically through your BIOS and power management settings.
So yes, your CPU might boost up to max speed for half a second while a program is loading, then immediately idle back down to minimum speed once it's done. It will increase or decrease speed as needed (often multiple times per second) in response to what you're asking it to do, and how many cores/threads are in use.