Profile 2, user relation access? A hard one!
Here is a zero code solution. 

Flag + Rules + Rules Block Visibility
 + Views

1 flag for "request" 

1 flag for "allow"

When "request" flag is flagged >> send e-mail with link to flagging user profile.

Then other person opens link and sees their profile and clicks the "allow" flag.

If user is listed in the Allowed flag list, then show View Block with the all the fields, if not, then show View block with limited fields.



Here is an indepth example to using Rules Block Visibility: How to stop a Views block from displaying to admins, such as user/1?