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.