We've talked a lot about services without really discussing what they are. In Drupal 8, a service is a PHP object that performs some sort of global task. That means they are separated from the specifics of why that task would need to be performed and be able to concentrate solely on how to perform that task. The services exposed by Drupal 8 core can be found in /core/core.services.yml. If you need functionality from the Drupal 8 system, either from core or contrib, you'll be requesting services. From interacting with the database, to making HTTP calls to external systems, to interacting with the cache, all of those are encapsulated in services. Using dependency injection, all you need to do is declare your dependency on them in your own code and then make use of them when your class is instantiated.
In most cases, services are singletons and stateless. The service container instantiates the service when necessary, stores that object, and provides it whenever requested. Services can be configured to be regenerated every time they are requested or for every request or sub-request.