В языках бывает проблема ограниченности кол. имен. Можно дать одно и тоже имя объекту который будет по разному работать или иметь противоположное поведение просто от того, что два разных разработчика классов дали одинаковое название своему классу. Вот ты подключаешь эти два модуля и получается конфликт имен когда пишешь cout. Если же использовали пространство имен, то писать надо допустим так std::cout или для другой библиотеки допустим myb::cout.
А написав
using namespace std;
мы можем теперь не писать std:: и упростить код. Но если все же нам надо будет подключить ту другую библиотеку, то придется обращаться к ней как myb::cout вот потому некоторые рекомендуют всегда писать std::cout и не играться using namespace
Но я так не делаю, так как использую стандартные библиотеки, а в них совпадений почти нет.
а, вот ссылку забыл, можно всегда читать все в хелпе
https://msdn.microsoft.com/ru-ru/library/5cb46ksf.aspx