In the context of the C or C++ programming languages, a library is called header-only if the full definitions of all macros, functions and classes comprising the library are visible to the compiler in a header file form.
[1] Header-only libraries do not need to be separately compiled, packaged and installed in order to be used.
Another advantage is that the compiler's optimizer can do a much better job when all the library's source code is available.
The disadvantages include: Nonetheless, the header-only form is popular because it avoids the (often much more serious) problem of packaging.
For C++ templates, including the definitions in header is the only way to compile, since the compiler needs to know the full definition of the templates in order to instantiate.