Acontece que você tem que compilar os arquivos fonte e então linkar os arquivos objeto criados (os arquivos .o) para então obter o executável.
Se você usar o comando
gcc *.c *.h -o executavel
o gcc vai compilar os arquivos fonte e já linkar os arquivos objeto gerando então o executável, mas se você usar a opção "-c" você está dizendo para o gcc que ele deve apenas compilar, mas não linkar dessa forma você vai obter apenas os arquivos ".o".
Se preferir fazer a compilação e a linkagem separadamente pode usar os comandos
gcc -Wall -c *.c *.h
para compilar e finalmente
gcc *.o -o executavel
para linkar.
Na sua tentativa deu errado porque você linkou apenas com o ".o" do main e as funções definidas dos outros arquivos objeto não foram incluídas no executável. Por isso os erros de "undefined reference".
Continue usando o gedit e a linha de comando por enquanto para compilar. Assim você vai aprender como as coisas funcionam. Depois disso é que você pode procurar uma IDE se preferir. Partir direto para uma IDE é ruim porque as vezes você encontra problemas bestas e não entende como resolver porque sempre dependeu só da IDE.
O tópico sobre o Makefile está aqui
http://ubuntuforum-pt.org/index.php/topic,21155.0.html