How to disable edit their own profile per role?
There is one module called "UserProtect" module. With this module you can hide edit account, edit password, email from based on user roles and for specific users too.

You can set permission by going /admin/people/permissions where you can see User protect and you can configure it /admin/config/people/userprotect here

Protected Roles





User Protect Module Permission



For example, I don't want to give permission to my Test One and Test Two Users for edit their profile. So, I wanted to hide it from "Test One" and "Test Two".



Hope this helps!