__c refers directly to a custom object whereas __r refers to a reference (a relationship) between two objects such as the parent-child object relationship or child-parent object relationship in order to help you ‘get’ or ‘navigate’ to the parent from a child or vice versa.
__c is for Custom objects For example: Custom_Object__c . It is used for reference custom object in Apex or visualforce page, formula field etc internally. Used as suffix.
__r is for Custom objects reference For example: Custom_Object__r . It is used for reference custom object relationship name in Apex or visualforce page, formula field etc. Used as suffix.