When programming embedded systems, the easiest is to program them to execute their tasks one after the other, so that until one task is finished, the next cannot start. Basically, the developer creates a list of tasks that the microcontroller goes through. For many applications, this is sufficient, but it is often inefficient or impossible to list which step comes next. A very simple example, when two LED lights need to be blinking at intervals of 89 ms and 216 ms, where it would be impossible to write a list of on, off and delay operations.
There are several steps to making a meal. While the water is heating on the stove for one ingredient, the chef can work on another step instead of waiting. It would take more time to go through the steps of the recipe by doing one part at a time and not starting the next until it is finished. Like a chef, a microcontroller may often have to deal with several tasks at once. Because a processor can execute one instruction at a time, it can only create the impression of parallelism by switching between tasks at short intervals.
In the case of a sequential control, there is no operating system. If multiple tasks need to be handled by the CPU at the same time, some kind of system is needed to decide when tasks should be given resources, when to run or stop them, or which one should take over if there are multiple tasks waiting. This system is called the operating system, which acts as a sort of director in embedded systems and other IT devices.