Это оператор вывода в консоль, который используется вместе с объектом std::cout.
std::cout это объект типа std:stream
Этот оператор является перегруженной функцией, то есть такой, который имеет множество определенных функций с одним и тем же именем, но разной сигнатурой.
Это операторы. В зависимости от контекста есть варианты для чего они используются.
Соотв. могут быть перегружены для каких-либо своих целей.
Создатели C++ посчитали, что будет красиво показывать направления ввода-вывода операторами (как-бы стрелками-направлением) в контексте потоков ввода-вывода.
Я так понимаю Вы столкнулись с std::cout << "Hello world";
Буквально вывести в cout "Hello world"
Но так-же они н-р используются при сдвиге int a = 5, b = a >> 1;
См. тему побитовые сдвиги.
int x = 5;
std::string y = "test";
std::cout << x << y;
Это удобнее, чем добавлять int к строке и затем эту строку выводить какой-то функцией.
Хотя, по сути, могли бы просто функцию с variadic arguments сделать, как в других языках... Ну, видимо, по тем временам, когда создавался C++, были какие-то основания так не делать.
Одно из них - функция должна носить какое-то имя, и какое имя ни придумай, все равно это может вносить путаницу, когда кто-то захочет сделать нечто другое с таким же именем. А C++ очень универсальный язык, там могут что угодно хотеть сделать.