Ce serait sans doute plus clair si on faisait un peut d'histoire de l'informatique.
Il y a quelques décennies, à l'époque où les écrans n'existaient pas encore (ou bien seulement pour l'administeur système, mais pas pour les utilisateurs), la seule sortie qui existait était le papier, et l'imprimante matricielle. On a donc représenté la sortie standard comme une feuille de papier avec une largeur fixe (typiquement 80 colonnes) et une hauteur infinie (donc un nombre de lignes aussi grand que l'on veut.
Cette époque n'est pas si lointaine que cela, puisqu'on fonctionnait encore suivant ce mode au début des années 80 (je parle des utilisateurs ; c'est l'apparition des PC, donc des postes individuels, qui a tout bouleversé).
Ce type de périphérique de sortie est ce que l'on appelle un "télétype". Le télétype reçoit des caractères, les imprime un par un comme une imprimante, et on utilise un caractère spécial pour permettre un retour à la ligne automatique -- comme une imprimante. Et les flux en C++ en sont rien d'autre que cela : un "truc" qui imprime des caractères comme un télétype.
Je n'ai pas supposé, dans ma description que les caractères étaient affichés sur un écran. Le paradigme du télétype peut en effet s'appliquer à un écran, dès lors qu'on assure un défilement approprié à chaque retour à la ligne ; il peut aussi s'appliquer aux imprimantes, tant qu'elles n'affichent que du texte brut, ou même aux fichiers texte. Ceci explique pourquoi on utilise les flux pour lire ou écrire adns des fichiers.
Enfin, lorsque les écrans texte sont apparus, on les a utilisés comme des télétypes, pour éviter de changer tous les programmes déjà écrits. Voiilà pourquoi aujourd'hui on utilise toujours cette notion de flux de caractères pour afficher à l'écran.