One account, one email, two different usernames I am trying to create a social website that each member can create two different profiles with two different usernames, one public and one private. The member should be able to toggle between profiles the same way you do with facebook when you toggle between your main profile and a different page you own. The member is able to post new nodes as his/her private username or public username by simple toggling between the two. 
I have been researching many modules such as profile2 and subuser. The problem with subuser is that you can switch between your main account and the subuser easily but you can't switch between your subuser and the main user except if you logout first. Also, with the subuser, you are required to add another email address for each subuser. It would better if there is only one email address access to both accounts. What is the best solution?
Due to drupal architecture you should go with a custom solution that create a second account for the user when he register by adding a global known prefix for unique fields that would be used when switching the user account.

Say user registered with mail someuser@somedomain.com you will make another account using that mail someuser.{global_key}@somedomain.com having {global_key} set in code you will use it for logging the user when he needs to switch accounts.

Scenario:


user registered 
in custom module implement hook_user_register() and create another account for the user by using the {global_key}
if user needs to switch account do login by adding the prefix {global_key} to username (you could add to password or let password be the same) let switch account be a hook_menu implementation reading the 



  global $user object and create a new account using {global_key}


-user forget password send the reset password link with a query parameter identifies the account will be reset by implementing hook_mail_alter

Hope that helps!