Você pode criar toda a interface gráfica com a biblioteca GTK criando tudo do zero (comandos para criar as janelas e botões, colocar os botões nas janelas, etc).
Só que projetar algo "gráfico" apenas "programando via texto" não é muito prático.
É aí que entra o glade. Você cria a parte "visual" da GUI toda nele e ele salva um arquivo (um arquivo xml, se não me engano) que basicamente descreve como é sua interface gráfica. Depois, usando uma função própria da biblioteca GTK (pyGTK, já que estamos falando de Python) você carrega esse arquivo e programa o resto, ou seja, a lógica da interface gráfica. Algo como "ao clicar no botão 'CoolButton' que criei no Glade execute a função 'cool_function' que criei.
Outra biblioteca bastante conhecida para criar interfaces gráficas é a QT (pyqt para Python). Assim como a GTK, com a QT também dá para criar a interface gráfica de maneira visual usando o qt-designer.
Claro que a interface gráfica não é tudo. No seu exemplo de "leitor de PDF" você precisa "ler o arquivo PDF" e como não faz sentido você reimplementar todo o padrão PDF novamente então você também deverá usar uma biblioteca para isso, no caso a melhor opção provavelmente e a poppler (mesma biblioteca que o Evince usa).
Minha sugestão, escolha primeiro uma biblioteca para criar as GUIs como a GTK ou a QT (tem outras, mas essas são as mais usadas) e tente criar algo que não precise de outras bibliotecas além delas por enquanto. Que tal uma "calculadora gráfica" com as quatro operações fundamentais.
Assim vc vai entender o básico de criar interfaces gráficas. Depois disso você pode partir para algo mais. Que tal um player bem simples de música?