The problem with Conjugate[] is that it is a Numerical Function:
In[80]:= Attributes[Conjugate]
Out[80]= {Listable, NumericFunction, Protected, ReadProtected}
and it doesn't seem to work on symbols. The same is true of Re[], Im[] and Abs[].:
E.g..
In[2]:= Head /@ {a, b}
Out[2]= {Symbol, Symbol}
In[1]:= Re[a + b I]
Out[1]= -Im[b] + Re[a]
That doesn't even make sense. Why would the real part of a complex number include the negative of the imaginary part of symbol b. Apparently, trying to take the real part confuses MMA so that it can't compute correctly. Hence,
In[11]:= z = a + b I
Conjugate@z
Out[11]= a + I b
Out[12]= Conjugate[a] - I Conjugate[b]
If Conjugate[] knew that a and b were Reals, it would know that Conjugate [Real x] =x, etc.
So I devised my own simple function:
In[77]:= z = a + b I
conjugate[z_] := z /. I -> -I;
conjugate[z]
Out[77]= a + I b
Out[79]= a - I b
..useful for more complicated expressions:
In[61]:= a E^(I x) a conjugate[E^(I x)]
Out[61]= a^2