Hook_menu_alter is called when the menu is being rebuild so you shouldn't use it for these situations.
Normally you should set the permission on your page view to only allow the roles you want to see that view. The menu system will handle hidding the tab for you when the user doesn't have the right permission.
The one thing that's weird is that you want to restrict on a role and if the user is viewing his own profile. In this case you do want to use hook_menu_alter but not to hide the menu tab but instead to replace the access callback with your own.
In your custom access callback you want to do something like http://api.drupal.org/api/drupal/modules--user--user.module/function/user_view_access/7
So essentially you want to do the logic on the access callback not on the hook_menu_alter.
You're going to run into issues with weights because I'm sure views run last.
To work around this you should implements hook_module_implements_alter to designate your module to run after views only for the hook_menu_alter hook.
This doesn't required any weight changes and it helps resolve the problem where you might want your module to run before views in certain situations, yet after it in a different situation.