That isn't at all a stupid question.
iostream is a C++ code file (more specifically a header file, but that doesn't matter). It contains the code that defines cout, cin, endl, etc. If we want to use them, we need them to be in our code, that's why we include it. However, if we look at it's contents, we will (schematically) see something like this (This is not a serious attempt of trying to map iostream schematically, but I will refrain from making things too complicated, and for the explanation, it will do):
// iostream header file
namespace std
{
ostream cout;
istream cin;
// etc etc
};
Using the using keyword doesn't mean we add functionality, it means we say that we read things by default. If we say using namespace std; then we say: If we come across an OBJECT name that doesn't exist in our current namespace, check if there exists a namespace std in which it does exist, and use that object. Thus, it doesn't really add a function, it is the include that "loads" cout, cin, endl and all the like.
(Note that the schematic above is not what you will find when opening the iostream file, in reality it's a lot more complex and also contains a lot of definitions.)
The tutorials page gives a nice explanation http://www.cplusplus.com/doc/tutorial/namespaces/