When you start a process in the foreground, the shell will wait for it to complete (with one of the
wait() family of system calls) before reading the next command. When you start a process in the background, the shell does not wait for it to complete or change state; it immediately reads and executes the next command.
Note that whether or not you start a process in the background, you can move it between background and foreground at will (with
bg, or with
fg). All jobs are equal in that respect. The only restriction is that there can be at most one foreground job at any given time, and backgrounded jobs get stopped if they try to use the shell's tty.
Whenever there is no foreground job, the shell will read its next command (from the script file or from stdin) and execute it.