Role:-

1. Roles provide access to records visibility for the users.

2. It is basically a record level access.

3. It follows a hierarchy. And data visible permissions are given based on hierarchy. 

4. Roles control access to records and fields only.


Profile:-

1. Profiles provide access control of CRED(create, read, edit, delete)  records of the users.

2. It is basically an object and field level access.

3. It does not follow any hierarchy. Permissions are given based on the profile.

4. Profile control access to Objects, field-level security, page layouts, record types, and apps.