Not necessarily. If you include the same header twice, include guards will prevent that, so all that will happen is that compile times will become microscopically longer.
However, a header might need a certain other header (e.g. <string>) that another source file doesn't need, and hence doesn't include. This will mean that you will get an error on compilation. In general, include EVERY header file that you need, but make sure not to randomly include things that you don't need. For example, you don't often need the <iostream> header in a header file.
On a side note, avoid usingnamespace std; in header files. Its generally bad practice, it forces the std namespace into the global one, whether the user of the header wants it or not. This defeats the purpose of namespaces.