Dans les systemes posix, fork est la seule facon existante pour creer un nouveau processus. Donc si tu veux ecrire un shell. Il va falloir creer de nouveau processus, et donc faire un appel a fork() a un moment ou a un autre (souvent en le couple a une variante de exec()).
Ca c'est le cas d'ecole. Un cas moins classique mais tout aussi utile est le cas de la gestion de permission. Par exemple, j'ai ecrit un server FTP qui se base sur les permissions de l'utilisateur. Une fois l'identite de l'utilisateur connu, le processus fork et change ses permission pour prendre les permission de l'utilisateur. Ainsi apres authentification toute faille de securite ne donnera pas plus de pouvoir super-utilisateur au mechant hacker.
Un autre cas d'utilisation est pour obtenir de la concurrence dans l'execution d'un service. Par exemple apache demarre de nombreux processus pour pouvoir traiter des clients en utilisants des ressources individuelle.