>> mesmo o valor prendeu bc por mudanças. mas nada acontece ao bMember.
Naturalmente algo acontece ao bMember: você overwrite o aqui:
>> *bb = *ba;
pontos do bb ao mesmo objeto de B que aa2->bMember, IE. ambo o ponto ao objeto esse aponta bc a.
Assim, quando você dereference o ponteiro do bb (*bb), você começ esse objeto (o mesmo objeto que todos os três ponteiros mencionados apontam a).
Quando você atribui então o *ba a esse objeto, você overwrite o com os dados novos. Isto significa que todos os três mencionaram que os ponteiros apontarão agora a esse objeto overwritten.
Eu devo dizer embora que você está fazendo algum material realmente louco aqui. Que é o ponto de todo este código? Parece altamente sujeito a erros, e complicado desnecessariamente.