What you are asking will be true for all Unixes, not just Gnu/Linux.
The thing to note is that after a `fork`, one does not need to exec. So for shell built-ins the shell will fork, and then do the built-in command.
The shell will also fork for a sub-shell. The shell does not fork when it does not have to: e.g. for simple commands that are built in. Where simple includes not in a pipeline.
There is also (not mentioned in your question) the pipes. These are created before the fork, but wired up after the `fork`, and before the, optional(see built-ins), `exec`.