GUI and windows service communication
If you are going to be developing with .NET, use WCF for your interprocess communication. WCF greatly simplifies development because the intricacies associated with a specific communication mechanism (e.g., sockets, pipes, etc.) are abstracted behind a unified programming model. Thus, it doesn't matter if you choose to use http, tcp, or named pipes for your transport mechanism, the programming model is the same.
I would highly recommend Juval Lowy's book Programming WCF Services for all things WCF. You can also visit his website, IDesign.net, for free WCF code samples.
For an overview of WCF, watch this free video at dnrTV. It covers the purpose of WCF and demonstrates WCF programming through some easy-to-follow examples.
If you have not already created your Windows service but plan to do so in C#, you can follow the step-by-step here.
There are many ways to communicate between processes - named pipes, mailslots, memory mapped files, sockets, ActiveX/COM objects, just to name a few. It really boils down to which technologies you are familiar/comfortable with.