Assigning roles and permissions Drupal 7 I have a hierarchy of roles which are Admin -> shop_admin -> food_manager / drink_manager / supplies_manager 

So the Admin can edit the permissions of all the roles. Is there a way to allow the shop_admin to edit the permissions of drink_manager, food_manager and supplies_manager? 

So basically my question is - Is there a way to give a user permission to manage other roles and permissions?
If you go on www.yoursite/admin/people/permissions#module-user you can decide witch kind of user can edit user permissions, so in your case only admin and shop_admin.

Of course you do not want the shop_admin to edit admin permissions, and all the pages where you can edit single user permissions are forms so you can use hook_form_alter in order to hide unwanted options or add conditions based on user role