Update
Not sure why all responses here are not simple and direct, maybe in older versions this did not work, but now it does:
Abs[a+Exp[I*c] b]^2//ComplexExpand//FullSimplify
a^2+b^2+2 a b Cos[c]
(Abs[a+Exp[I*c] b]^2+Abs[a-Exp[I*c] b]^2)/(2 Abs[a+I b]^2)//ComplexExpand//FullSimplify
1
$Version
14.0.0 for Mac OS X x86 (64-bit) (December 1, 2023)
Original answer
Until someone figures out how to do it in a better way, here is a work around. Define a function (which is true only for your specific case of parameters):
RemoveAbs[x_] := FullSimplify[ComplexExpand[Sqrt[x Conjugate[x]]]]
Then
Abs[a + Exp[I*c] b]^2 /. Abs -> RemoveAbs
a^2 + b^2 + 2 a b Cos[c]
There is a simpler version inspired by @Nasser answer. Define a function
RemoveAbs[x_] := ComplexExpand[Abs[x]]
and now, for the sake of variety, apply simplification at the end:
Abs[a + Exp[I*c] b]^2 /. Abs -> RemoveAbs // FullSimplify
a^2 + b^2 + 2 a b Cos[c]
Point is, all the above will work for more complicated cases because /. is a ReplaceAll. Even for cases that are convoluted via things like, for example, TraditionalForm - the only thing you need is that InputForm still has Abs in it. For instance, imagine a beast of expression, here rather a simpler one but in reality they could go for pages:
(Abs[a + Exp[I*c] b]^2 + Abs[a - Exp[I*c] b]^2)/(2 Abs[a + I b]^2) // TraditionalForm

and now, voila, you get your simplification:
% /. Abs -> RemoveAbs // FullSimplify
1
Abs[a + Exp[I*c]b]^2. Just noting the difference, but this may work for him too. – Vitaliy Kaurov Sep 01 '13 at 05:11ComplexExpandon something before squaring, vs. squaring then applyingComplexExpand(which will not have simplified). Mathematically these seem to be the same to me sinceComplexExpanddoes not add or take anything, but modifies the shape of the expression. But may be I am missing something. – Nasser Sep 01 '13 at 05:29