Nearly all programs are always listening for messages.
The way windows applications work is, they sit in a constant loop, checking for messages from the operating system, when it receives a message, it responds accordingly.
That "not responding" windows frequently does, means the application isn't acknowledging messages.
It is however possible for programs to "sleep" and completely give up CPU for a specified time. The kernel essentially stops giving the process CPU time for the amount of time the app requested to "sleep". This can also result in an application showing as "not responding" because it is unable to respond to messages (cause it's sleeping).
In short, every program you have running, is sitting in an endless loop listening for messages and burning CPU time.