The fork(2) system call in an existing process ("the parent") creates a new process that (mostly) duplicates the parent ("the child"). In the parent, fork() returns the child PID number, while in the child, fork() returns 0, which is how the otherwise duplicate processes determine their own roles.
In the child, the memory map, current directory, user id, group id, and open files are the same as in the parent, and can be modified using the corresponding system calls.
In most cases, the child replaces its executable image using one of the exec(2) system calls.
Some programs use just fork() to manage multiple instances of themselves, usually where a parent simply waits for incoming requests and fork()s a new child for each request.
The parent-child relationships form a tree structure (some OSes have a pstree utility which shows this graphically).