Für Vektoren (die man als Matrizen auffassen kann) ist das * natürlich eher die Adjunktion. Also komplex konjugieren + transponieren (aus Zeilenvektor einen Spaltenvektor machen und umgekehrt).
Wenn man mal annimmt, dass a und b Zeilenvektoren wären (sonst müsste man das Sternchen an den ersten Faktor schreiben, um eine halbwegs konsistente Notation zu erhalten) kann man das umformen:
|a+b|^2 = (a+b)(a+b)* = (a+b)(a*+b*) = aa* + ab* + ba* + bb* = |a|^2 + |b|^2 + ab* + ba*
Falls a und b orthogonal sind ist deren Skalarprodukt = 0, das Standardskalarprodukt in dieser Notation gegeben durch
<a,b> = ab*, <b,a> = ba*
beide sind 0. Deshalb fallen die beiden zusätzlichen Terme raus. Wenn a und b nicht orthogonal sind gilt keine Gleichheit, der Satz des Pythagoras gilt aber auch bekanntlich nur in rechtwinkligen Dreiecken.