Gaurav (I believe) and I interpret “blocking” as “yielding the CPU by waiting for an external event,” that is, being blocked instead of blocking (starving) other threads of execution.
I can see that the term “block” can be a source of confusion here when being looked at active instead of passive.
At a high level, a task has the following states -
Running - The task is executing and actively using CPU.
Ready - The task is ready to run but not running as the scheduler has currently selected some other task to run. The scheduler will pick it up when it becomes the highest priority ready task.
Blocked - The task cannot run because it is waiting for an event (one such event is a delay expire event which happens when the time passed to osDelay expires). The scheduler can not pick up this task until it becomes Ready.