la classe che devi ereditare è MembershipProvider (e RoleProvider se vuoi anche la gestione dei ruoli personalizzata).
I metodi di membershipUser sono dei wrapper che utilizzano la classe MembershipProvider per cui non serve ridefinirli.
Per rispondere alla tua domanda, Da dentro l'applicazione asp.net per tutte le operazioni devi far riferimento alle classi statiche Membership e Role. Queste sono dei proxy verso i provider personalizzati (Le classi citate su che hai ridefinito) che asp.net carica dal web.config nelle sezioni preparate ad-hoc per caricare i provider.
Se vuoi sfruttare a pieno il provider personalizzato allora MembershipUser va ridefinita ma SOLO A LIVELLO DI PROPRIETA' (e il costruttore) per farla aderire alla tua tabella MembershipUser personalizzata. Giusto per fare un esempio se la tua tabella prevede anche il nome e cognome:
codice:
//lo posto in c#
public class MembershipUser : System.Web.Security.MembershipUser
//la classe base la qualifico con il namespace altrimenti fa a botte con la classe derivata
{
public string Nome {get;set;}
public string Cognome{get;set;}
public MembershipUSer(tipo tutti_i_parametri_di_default, string nome, string cognome)
{
prop_default = param_default;
//ecc. ecc.
Nome = nome;
Cognome = cognome;
}
}