Para muitos programas ter uma interface gráfica e até mesmo usar um banco de dados são dispensáveis. KISS. Para quem está aprendendo uma linguagem é até contraproducente. Você tem que aprender quais são e como usar os operadores disponíveis, dados, funções, classes, etc e etc. Não deixe de ler também um "guia de estilo" que ensine "convenções de nomenclatura" entre outras coisas. Depois de tudo isso e mais um pouco, chega a hora de trabalhar com bancos de dados, cada linguagem implementa uma forma de acesso e manipulação, mas é fácil de aprender se você não "queimou etapas" como a de I/O e matrizes. Nessa altura do campeonato você já deve ter visto alguns paradigmas de programação, provavelmente: programação estruturada, programação procedural e com sorte programação orientada a objetos ai é chegada hora de ver programação orientada a eventos e com ela criar suas GUIs.
Para criar interfaces gráficas você pode usar um toolkit, vou citar 3, TK, QT e GTK+. Você vai conseguir trabalhar facilmente com qualquer um desses em C. O ideal é que você aprenda implementar as chamadas e todo o resto manualmente, ou seja, digitando e não arrastando caixas de diálogos. Mas se você deseja o jeito """facil""" ainda pode usar construtores gráficos como o Glade e o Qt designer. O Qt designer é mais completo e "intuitivo". Glade trabalha com um conceito diferente para criação das interfaces. Mais no final tudo é questão de gosto.
http://en.wikipedia.org/wiki/Widget_toolkit
http://en.wikipedia.org/wiki/Tk_%28framework%29
http://en.wikipedia.org/wiki/Qt_%28toolkit%29
http://en.wikipedia.org/wiki/GTK%2B
http://en.wikipedia.org/wiki/Graphical_user_interface_builder
http://glade.gnome.org/
http://qt.nokia.com/products
Isso já deve servir para te dar um norte.
Se resolver usar GTK com Glade tenho alguns tutoriais que podem servir:
http://www.cin.ufpe.br/~cinlug/wiki/index.php/Mantendo_A_Sanidade_Com_O_Glade
http://tadeboro.blogspot.com/2009/09/glade3-tutorial-1-introduction.html
http://pilinha.wordpress.com/2009/01/31/desenvolvimento-para-plataforma-gnome-conceitos-basicos-mini-tutorial-gtk/
http://techie-blogger.com/getting-started-with-gtk-and-glade-for-gui-programming/
http://www.micahcarrick.com/12-24-2007/gtk-glade-tutorial-part-1.html
http://gtk-br.welrbraga.eti.br/tutorial/tutorialglade-20040727.pdf
O material não está totalmente atualizado mas como são apenas introduções... Alguns conceitos, inclusive, você deve usar em outros toolkits.
Esse é só um apanhado geral, você vai fazer muito mais que isso durante o processo de aprendizagem e alguns itens não incluem programar, como instalar "tudo", ler sobre a história da linguagem (não é essencial mas o básico é sempre bom saber), verificar as licenças (linguagem, toolkit, ferramentas) e escolher uma IDE. Outras coisas como: metodologias de desenvolvimento, ferramentas e métodos de debug e frameworks você aprende quando tiver necessidade.
Se você ficar com duvidas talvez seja melhor parar e recuar, aprenda lógica de programação e faça pseudocódigos. Depois volte no inicio.
Links uteis:
http://scratch.mit.edu/ (não é sacanagem, pode parecer e é "bobo" mas funciona)
http://www.dei.estt.ipt.pt/portugol/ (||)
http://www.programadoresdejogos.com/forum/viewtopic.php?t=5757 (incompleto mas muito bom)
http://www.tutomania.com.br/tutorial/apostila-de-logica-de-programacao (fiz uma leitura rápida e parece interessante)
http://forum.imasters.uol.com.br/index.php?/topic/390375-vdeo-tutorial-completo-de-lgica-de-programao/ (vídeos, não olhei)
http://informatica.hsw.uol.com.br/programacao-em-c.htm (introdução à C)
http://www.coltec.ufmg.br/~info/cursoC_olinux/curso_c_htm.htm (||)
http://www.vivaolinux.com.br/artigo/Introducao-a-linguagem-C-Parte-I/ (||)
http://www.vivaolinux.com.br/artigo/Introducao-a-linguagem-C-Parte-II (||)
Recomendo a leitura de todos os links começando com os "Links uteis". Saliento novamente que tudo aqui presente serve apenas de "base" e que é bom procurar no google e livros. Outro ponto é que escolher uma linguagem de propósito geral não significa usar ela para tudo, mesmo que "o trabalho" obrigue, você deve sempre aprender novas linguagens, abordagens, ferramentas e blablabla.
Observação: Alguns não aprendem a lógica de programação separada de uma linguagem de programação, geralmente usam pascal que é uma linguagem que foi criada para ensinar programação estruturada ou c (hoje em dia até python) mas eu aconselho a abstração usando pseudocódigo, mesmo que boa parte dos tutorias mostrem o contrário. Afinal de contas nessa fase o importante é "pegar o jeito da coisa", não aprender comandos e ter códigos funcionais. Qual é o grande problema de fazer atribuição usando uma seta apontando para a variavel (<- era o que eu usava) ou o := do pascal ou = em c? Só faz diferença se eu quiser um "programa de verdade" mas na hora de aprender você só vai fazer "programas de mentira".