6.77 Complex rules to help simplifications

ClearAll[x, y, z, g, foo]; 
p1 = Conjugate[x_]*Conjugate[y_] :> Conjugate[x*y]; 
p2 = (x_)*Conjugate[x_] :> Abs[x]^2; 
p3 = Abs[(x_)*(y_)]^(n_.) :> Abs[x]^n*Abs[y]^n; 
p4 = (x_)*Conjugate[y_] + (y_)*Conjugate[x_] :> 2*(Re[x]*Re[y] + Im[x]*Im[y]); 
p5 = (x_) + Conjugate[x_] :> 2*Re[x]; 
allRules = {p1, p2, p3, p4, p5};
 

test it

expr = {{foo = x*Conjugate[y] + y*Conjugate[x]; foo, foo //. allRules}, 
 {foo = x*Conjugate[y] + y*Conjugate[x] + z*Conjugate[g] + g*Conjugate[z]; foo, foo //. allRules}, 
 {foo = x*Conjugate[x]; foo, foo //. allRules}, {foo = x*y*Conjugate[x*y]; foo, foo //. allRules}, 
 {foo = x*y*z*Conjugate[x*y*z]; foo, foo //. allRules}, {foo = x + Conjugate[x]; foo, foo //. allRules}, 
 {foo = x*y + Conjugate[x*y], foo; foo //. allRules}, {foo = x*y*z + Conjugate[x*y*z]; foo, foo //. allRules}, 
 {foo = x*y + Conjugate[x]*Conjugate[y]; foo, foo //. allRules}, 
 {foo = x*y*z*g + Conjugate[x]*Conjugate[y]*Conjugate[z]*Conjugate[g]; foo, foo //. allRules}}; 
Grid[expr, Frame -> All, Spacings -> {0.5, 1}, Alignment -> Left]