Existem bibliotecas dinâmicas e estáticas, o mais fácil de explicar e utilizar são as estáticas.
Uma biblioteca não é mais do que um conjunto de ficheiros objecto (.o), estes ficheiros são os ficheiros gerados pelo compilador.
Uma forma muito trivial de compilar uma biblioteca é:
gcc biblioteca.c -o biblioteca.o
Depois para usar ela:
gcc programa.c bibliotecta.o -o programa
Bibliotecas mais complexas são um conjunto de .o, arquivados com o "ar".
Bibliotecas dinâmicas são mais complexas de explicar.
Se você não sabe para que serverm os .h, esquece a criação de bibliotecas, convem ser um programador experiente em C antes de pensar em criar bibliotecas
