iostream is a class and the << and >> operators are overloaded just for this class. If you use it with integers for example it will still work.
And you don't need to know assembler to know what bit shifting is. Every good C programmer knows bit shifting.

Q2: No, the header is valid only in the module you included it, nowhere else, and it hasn't got anything to do with namespaces.