Custom metadata can do everything like list custom settings in salesforce, Advantage of using custom metadata type is that data can be deployed unlike list custom setting where we need to configure values after deployment.
Custom metadata types enable us to create own setup objects whose records are metadata rather than data.
Two types of visibility are available if this type is installed as part of a managed package
Custom metadata type can also be queried unlike the List Custom Setting and also no SOQL limit is enforced on soql queries that made on custom metadata types.
For Apex test class, you can directly access custom metadata values unlike list custom setting where you need to create test data.
You can’t perform creation or updation of records in custom metadata unlike list custom settings.