$Assumptions=Table[Element[xx,Reals],{xx,{reRe,imRe,reIm,imIm}}];
o={{reRe+imRe I+reIm I-imIm,reRe-imRe I+reIm I+imIm},{reRe+imRe I-reIm I+imIm,reRe-imRe I-reIm I-imIm}};
ox=o/.{imRe->-imRe,imIm->-imIm};
oy=o/.{reIm->-reIm,imIm->-imIm};
oxy=o/.{imRe->-imRe,reIm->-reIm};
makeNice[x_]:=Block[{tmp,iii},
FullSimplify[Re[Expand@x]]+I FullSimplify[Im[Expand@x]]
]
MatrixForm@Map[makeNice,o,{2}]
template=o/.{reRe->reRe2,imRe->imRe2,reIm->reIm2,imIm->imIm2};
varianten={o,o*o,o*ox,o*oy,o*oxy};
MatrixForm@Map[FullSimplify[{{reRe2,imRe2},{reIm2,imIm2}}/.Solve[#==template,{reRe2,imRe2,reIm2,imIm2}]]&,varianten]