There are a couple of things that jump out to me immediately.They run in an entirely different console starting with Vista As a result of running in a different console, services cannot interact with the desktop. So essentially there is no direct UI support. You typically have to code a sibling UI application that does run as a normal program and uses some mechanism (named pipes for example) to communicate with the service. Typically only one instance of your service can be running at any given time. Processes are per user, services are per work station and hence often provide services for multiple users.
A Windows service typically does not have a user interface, it supports a set of commands and can have a GUI that's built later to allow for easier access to those commands