To get a user by a username you can use : 

  

     public class UserRepository
      {
           public static User GetUser(string domainName, string userName)
            {
              
              if (User.Exists(domainName + @"\" + userName))
                return User.FromName(domainName + @"\" + userName, true);
              return null;
            }
        }

  To get a user roles you can use

           Sitecore.Security.Accounts.User user = UserRepository.GetUser("yourdomain","youruserName");
       
           var rolesList = user.Roles.ToList();

            foreach(var role in rolesList)
            {
                var roleName = role.DisplayName;
                var roleDomain = role.Domain;
                // you have all the properties of a role in role object
            }