Shell is a different process,
and the new process that the shell should run is an entirely different one.
As process entities the shell and the new process that should run are different entities.
So to run a process, we need process space and the process binary for it to go.
Hence, the parent process shell creates the process space (fork) and in the new process space, the requested process which should run which is done by exec - overlaying the image of the binary that is to be run.
Any mistakes/modifications please correct them !