What is sid in Oracle
Oracle SID is the unique name that uniquely identifies your instance/database, whereas the Service name is the TNS alias that you give when you remotely connect to your database, and this Service name is recorded in tnsnames.ora file on your clients, and it can be the same as SID, and you can also give it any other name you want.
What is SERVICE_NAME in Oracle
SERVICE_NAME is the new feature from oracle 8i onwards in which the database can register itself with the listener. If the database is registered with the listener in this way, then you can use the SERVICE_NAME parameter in tnsnames.ora otherwise - use SID in tnsnames.ora.
Also, if you have OPS (RAC), you will have different SERVICE_NAME for each instance.
SERVICE_NAMES specifies one or more names for the database service to which this instance connects. You can specify multiple services names to distinguish among different uses of the same database.
SERVICE_NAMES = sales.acme.com, widgetsales.acme.com
You can also use service names to identify a single service that is available from two different databases through the use of replication.
In an Oracle Parallel Server environment, you must set this parameter for every instance.