In HOPEX profile are used to managed the CRUD. It give information on read/write of the UX and read/write on the data. it impact display of menus and some features.
Role are use to give a context from a business perspective. For exemple :
Sometime the profile and the role are a one-to-one relationship, thus the profile might have the same name as the role.
For example : You have a profile "Application Owner" and also a "Business Role" called "Application Owner".
Business Role can also be used to condition workflow or visibility.
For example you can define rule where you see or not object based on the role you have on them.
Frequent use case is for Audit solution. As an auditor you can view/edit your audit you have a role on, but you cannot edit the audit you are not assigned to.