Dispatcher is a module with a single function that dispatches incoming calls to the respective modules. It is a derivative of metadata, so it's required to generate metadata first in order to have a dispatcher module.
In essence, the workflow of the dispatcher is the following:
Receive extrinsic bytes from outside
Decode it as a local Extrinsic type
Decode DispatchInfo bytes of the extrinsic
From the resulting Call type, execute the extrinsic call
The dispatcher returns an array of bytes that define the result of the extrinsic execution.