You have c.cong() and conj()
But I believe that it is just a typo, conj(AB) = conj(B) conj(A)
The conjugate with matrices can mean element by element, but I imagine that is not the case here since your formula specifies the order of multiplication.
It is all to do with whether the elements of interest are scalars (reals or complex) or matrices (commuting or non-commuting elements). The field of reals and complex commute, so no difference need be specified, e.g. ab = ba and $\overline{ab} = \overline{b}\overline{a} = \overline{a}\overline{b}$ and there is no confusion. If the elements however are matrices, then they do not generally commute and the order does matter very much.
I think it is all a matter of what you consider to be the complex conjugate. If one starts with scalars and extends the system (most commonly the reals) to include $\sqrt {-1}$ for example, then the complex and the conjugate do not need to worry about order of multiplication. If then you do that with matrices (with complex values as elements) , or whatever other field, and want a norm that gives a scalar value within the original system (without the extension), and positive only to boot (otherwise how to have the triangle inequality or magnitude comparisons of any sort), then you end up with order and transpose. What then is the complex conjugate? The value (as a function of the input) that when multiplied by the element of interest (input) gives that norm. For matrices that means transpose is necessary. If doing only conjugate of the individual elements, then it is a different field. Is the conjugate on the scalar field or the matrix/vector field? That is the question that needs to be decided beforehand.
Keep It Simple Stupid
If the definition/formula being used requires transpose, do it. If somewhere a contradiction can be proven/found, change definitions/formulas to keep things consistent.