Aus Deinem Beispiel entferne ich jetzt mal alles, was für die Beantwortung der Frage nicht notwendig ist.
Du kannst einen `node` - `coordinate` ist ein spezieller `node` - an jeder Stelle eines Pfadteilstückes positionieren. Dafür kennt dieser die Option `pos`. Lässt Du `pos` weg, dann wird bei einem Node hinter einer Koordinate `pos=1` verwendet und bei einem Node hinter dem Pfad, also z.B. hinter `--`, wird `pos=.5` genutzt.
Du kannst also einfach hinter der berechneten Koordinate `($(A)!(C)!(B)$)` eine `coordinate` definieren und hast dann diesen Punkt unter dem gewählten Namen gespeichert. Damit lässt sich dann auch einfach der Winkel beschriften.
\documentclass[margin=5pt]{standalone}
%------------------------------------------------------------------------------
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{angles}
%------------------------------------------------------------------------------
\tikzset{
winkel/.style={draw=gray,angle eccentricity=.6,angle radius=0.6cm},
}
%------------------------------------------------------------------------------
\usepackage{blindtext}% für Fülltext
\begin{document}
\begin{tikzpicture}[auto]
\draw
(2.5,0) coordinate[label=right:B] (B)
-- node{$c$}
(-1,0) coordinate[label=left:A] (A)
-- node{$b$}
(2,2) coordinate[label=above right:C] (C)
-- node{$a$}
cycle
;
\draw[red]
(2,2)
--node[swap]{$h$}
($(A)!(C)!(B)$)coordinate(hc)% Koordinate hc am Lotfußpunkt von C auf die Strecke AB
;
\pic[pic text=$\cdot$,winkel]{angle=C--hc--A};% Winkelbeschriftung bei hc
\end{tikzpicture}
\end{document}
![alt text][1]
[1]: http://texwelt.de/wissen/upfiles/tw_dreieck3.png