jak dokładnie wyglądają definicje obiektów strumieni wejścia/wyjścia i dlaczego plik iostream nazywany jest biblioteką?
Jeśli chodzi ci o std::cout/std::cin, to generalnie to są obiekty typów odpowiednio: std::ostream oraz std::cin. A realizacja działania jest zależna od implementacji (tzn. od kompilatora, którego używasz).
dlaczego samo załączenie pliku iostream nic nie daje, tzn. dlaczego obiekty cin, cout są niedostępne/zamknięte bez użycia przestrzeni nazw std
Daje. Musisz użyć std:: (lub using namespace std;), bo tam się znajdują cin oraz cout.
i skąd wiadomo, że właśnie przestrzeni nazw std trzeba użyć, a nie jakiejś innej?
Z dokumentacji. Poza tym - wszystkie standardowe funkcje/klasy/obiekty znajdują się w namespace std bezpośrednio lub pośrednio (np. w std::chrono lub std::filesystem) .