I have a "Common.h" file, which stores all the strings are reused across my project.
static const std::string mystring = "IamAwesum";
A header is not compiled (exceptions being pre-compiled headers, a common build optimization technique, and by mistake), but is instead, as OP suspected, copied into the files which use them.
From [cpp.include] in the C++ Standard
A preprocessing directive of the form
# include" q-char-sequence" new-line
causes the replacement of that directive by the entire contents of the source file identified by the specified sequence between the " delimiters.
The included file is pasted into the file being compiled where the
#include directive is, replacing the
So if a file is not included, it never gets substituted into a file being compiled and absolutely nothing happens to the file.
An included file doesn't need to be listed anywhere in a project, target makefile, or what-have-you. The inclusion of the file is strictly up to the cpp file doing the including, though often a list of places to look for included headers will be present to abstract away the toolchain and libraries from the source code.