Es war aber nur im terminal wie schreib ich so ein programm das es auch GUI.
Prinzipiell läuft es so, dass du eine Bibliothek benutzt, die dem X-Server Anweisungen gibt, um zum Beispiel ein Kreis oder ähnliches zu zeichnen. Da man sich damit einen Wolf programmiert um eine GUI zu bekommen, gibt es GUI-Bibliotheken, die einem die Arbeit abnehmen. Es gibt mehrere: wxwidget, Qt, Gtk, motif, fltk und co. Gebräuchlich sind vor allem wxwidget, Qt und GTK.
Aber ehrlich gesagt, solltest du erstmal bei Terminal-Programmen bleiben. Das ist anspruchsvoll genug. In der Regel wollen Anfänger eine ganze Menge. Das funktioniert aber ohne Grundlagen nicht und für die braucht es Geduld und Arbeitswillen. Deshalb werden sie schnell frustriert und hören wieder auf.
Mein zweite Frage ist, man hört oft das viele freiwillige an open source projekten arbeiten, wie kann man aber an so einen projekt teilnehmen ?
Das ist von Projekt zu Projekt unterschiedlich. Meistens läuft es in etwa so: Du nimmst dir die Programmquellen und schreibst ein paar Patches. Killst Bugs oder schreibst Features. Die Patches sendest du dann ans Projekt. Mach das zwei, dreimal und vielleicht nehmen sie dich ins Entwickler-Team auf.