Based on the output of the first line, all subsequent substitutions work for me the way I expect them to, including substituting for Abs[] when tested on outputs that contain Abs[], such as the following:
{{0}, {(-CD)*U + CL\[Alpha]*w0*ArcSin[Abs[w0]/U] - 
          (CL\[Alpha]*U^2*ArcSin[Abs[w0]/U])/Abs[w0]}, {0}} /. 
   Abs[w0]/U -> 0
The outputs of lines 1 and 3 seem inconsistent: Sqrt[w0^2] and Abs[w0] are not equivalent, and it's unlikely Mathematica would transform one into the other without an explicit assumption that w0 is real. There is no such assumption in the notebook's code. I did not really understand your remark about Sqrt[] and Abs[], but maybe it has to do with this.
Or maybe this: Even if a == b, where a and b are distinct but equivalent expressions, then a + b /. a -> 0 results in b. For instance,  
(x + 1)^2 + (x^2 + 2 x + 1) /. (x + 1)^2 -> 0
(*  1 + 2 x + x^2  *)
Also 1/Sqrt[x] /. Sqrt[x] -> 1 or Sin[x]/Cos[x] /. Sin[x] -> 1 because the expressions auto-simplify to another form that does not match the replacement rule, similar to how (x^2 + 2 x + 1) is a sum and (x + 1)^2 is a power in my first example.