The database name is exactly as it implies, the name of your database. The database name is the same as your ORACLE_SID for that database.
A service name is a logical representation of your database for users connecting to the database through Oracle Net software. A database can be presented as multiple services, and a service can be implemented as multiple instances. For instance, you can have one service name that connects to multiple instances in a Real Application Clusters environment.
Most people configure their networking software to have the service name be the same as their database name. When this happens, the distinction between the two is not quite clear.