When should one use Named Credentials and when Remote site settings for making REST callouts from salesforce ? Is it fine to store clientId and clientSecret in custom labels ? When using remote site setting, i need to use custom settings as well to store endpoint and resouce (URI), so that i dont need to hardcode URI in apex class.
they both are totally different things. Remote site setting is just a way of notify Salesforce that we are making request to this server to get and post the data. Allow(authorize) us to do so.
Where Named credentials is your token using that the external application will know that this is person x and we need to do following things. you will need both things to make a successful request.
Insteadd of custom labels you should go with hierarchical custom settings. because normally we use custom settings to store these types of information.