First question: There will be no actual difference in performance. The business logic will be the same. You will be noticing considerable difference only if the GUI is consuming your resources, but than you have an other kind of problem, and I can not imagine a gui intensive application running as service.
Second question: pausing a service does nothing by itself. You are responsible of your threads in the service. You have to pause or stop your threads. Buy you don't have to run your thread all the time, you can use Thread.Sleep
], to make your thread sleep a while. So pausing/stoping and restarting a service is not a good idea, it is a waste of resources. You can even use IPC methods or thread synchronization methods to have separate parts of your solution work together as needed.
Third question: You can not have a limbo thread somewhere. A thread belongs to a process. Think of your service not as a single threaded application. You can have many threads in a service: like a connection watcher and working thread. You can use thread control and synchronization methods from the watcher thread to pause/resume or restart you worker thread(s) rather than your whole service.