I think, your questions a) to c) don't involve any problems specific to GPRS. It's just ordinary TCP/IP stuff, that is explained in any TCP/IP text book or tutorial.
The only GPRS specific problem may be, that your mobile phone provider doesn't route inbound connections. This is implementation dependent. To allow the connection to be initiated by the server, you also need to refer to a dynamic IP service, e.g. dynip.org to make the mobile device IP known. You can avoid the effort and possible conflicts with provider restrictions, if the connection is always initiated by the mobile.