I drew your left triangle and you can adjust the techniques to construct the second triangle or any others.
At the bottom, I explained what the code was doing. If you need any further explanations so you can re-create other examples with it, just ask.
\documentclass[convert = false, border = 2cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc, intersections, arrows}
\begin{document}
\begin{tikzpicture}
\coordinate (O) at (0, 0);
\draw[-latex] (O) -- +(2, 0) coordinate (P1) node[pos = .5, above]
{\(c_2\)};
\path[name path = line1] (P1) -- +(0, -5);
\path[name path = line2] (O) -- (-45:4cm);
\path[name intersections = {of = line1 and line2, by = P2}];
\draw[-latex, red] (O) -- (P2) node[pos = .5, below] {\(w_1\)};
\draw[-latex] (P2) -- (P1) node[pos = .5, right] {\(v_1\)};
\draw[shorten >=.5\pgflinewidth, shorten <=.5\pgflinewidth, -latex, red]
let
\p0 = (P2),
\p1 = (P1),
\p2 = (O),
\n1 = {atan2(\x1 - \x0, \y1 - \y0)},
\n2 = {atan2(\x2 - \x0, \y2 - \y0)},
\n3 = {1cm},
\n4 = {(\n1 + \n2) / 2}
in (P2) -- +(\n1:\n3) arc[radius = \n3, start angle = \n1, end angle = \n2]
node at ([shift = (P2)] \n4:.5cm) {\(\alpha_1\)};
\end{tikzpicture}
\end{document}
I started by labelling the origin as (O)
. From the (O)
, we can use -- +()
to specify a distance from the origin. In this example, I said over 2
up 0
and I then labelled the end of the vector (P1)
.
Next, I used the path commands to draw a line straight down from (P1)
and a line with polar coordinates -45
degrees and radius 4cm
. As you see, I named both the lines for use with the intersections
library.
With the intersections
library, I found where the two paths meet and labelled it (P2)
. Now, we have a coordinate we can direct from and to with the other vectors.
Lastly, I used the \draw let .. in
command to find the angle and draw the arc between the two vectors.
As Qrrbrbirlbel suggested, we don't need on background layer
if we add \draw[shorten >=.5\pgflinewidth, shorten <=.5\pgflinewidth, -latex, red]

To create you first triangle in your edited post, all I needed to do was change:
\coordinate (O) at (0, 0);
\begin{pgfinterruptboundingbox}
\path[name path = line1] (O) -- (15:7cm);
\draw[-latex, red] (O) -- (-45:4.5cm) coordinate (P1) node[pos = .5,
below left, rotate = -45]
{\(\mathbf{w}\)};
\path[name path = line2] (P1) -- +(0, 7cm);
\path[name intersections = {of = line1 and line2, by = P2}];
\end{pgfinterruptboundingbox}
\draw[-latex, blue] (O) -- (P2) node[pos = .5, above, rotate = 15] {\(\mathbf{c}\)};
\draw[-latex] (P1) -- (P2) node[pos = .5, right] {\(\mathbf{u}\)};
\draw[dashed] (P2) -- +(0, 1.5cm) coordinate (P3);
\draw[-latex] let
\p0 = (P2),
\p1 = (P3),
\p2 = (O),
\n1 = {atan2(\x1 - \x0, \y1 - \y0) - 360},
\n2 = {atan2(\x2 - \x0, \y2 - \y0)},
\n3 = {.75cm},
\n4 = {(\n1 + \n2) / 2}
in (P2) +(\n1:\n3) arc[radius = \n3, start angle = \n1, end angle = \n2]
node at ([shift = (P2)] \n4:.5cm) {\(\alpha\)};
\draw[-latex] let
\p0 = (P1),
\p1 = (P2),
\p2 = (O),
\n1 = {atan2((\x1 - \x0) / (\y1 - \y0), 1)}, %see link for explanation here
\n2 = {atan2(\x2 - \x0, \y2 - \y0)},
\n3 = {.75cm},
\n4 = {(\n1 + \n2) / 2}
in (P1) +(\n1:\n3) arc[radius = \n3, start angle = \n1, end angle = \n2]
node at ([shift = (P1)] \n4:.5cm) {\(\beta\)};
There was an error with the second \draw let .. in
command so I asked a question about it. You can read the details of it here TikZ: When I use the draw let ... in command to draw a trivial arc, I get dimension too large and why \n1
is different in this case.

With TikZ
, we can use the math parser to calculate the angles. Therefore, we can verify that everything is exact to the drawing specifications.
\documentclass[convert = false, border = 1cm]{standalone}
\usepackage{tikz, fp}
\usetikzlibrary{calc, intersections, arrows, fixedpointarithmetic}
\begin{document}
\begin{tikzpicture}[fixed point arithmetic]
\coordinate (O) at (0, 0);
\begin{pgfinterruptboundingbox}
\path[name path = line1] (O) -- (15:7cm);
\draw[-latex, red] (O) -- (-45:4.5cm) coordinate (P1) node[pos = .5,
below left, rotate = -45]
{\(\mathbf{w}\)};
\path[name path = line2] (P1) -- +(0, 7cm);
\path[name intersections = {of = line1 and line2, by = P2}];
\end{pgfinterruptboundingbox}
\draw[-latex, blue] (O) -- (P2) node[pos = .5, above, rotate = 15]
{\(\mathbf{c}\)};
\draw[-latex] (P1) -- (P2) node[pos = .5, right] {\(\mathbf{u}\)};
\draw[dashed] (P2) -- +(0, 1.5cm) coordinate (P3);
\draw[-latex] let
\p0 = (P2),
\p1 = (P3),
\p2 = (O),
\n1 = {atan2(\x1 - \x0, \y1 - \y0) - 360},
\n2 = {atan2(\x2 - \x0, \y2 - \y0)},
\n3 = {.75cm},
\n4 = {(\n1 + \n2) / 2}
in (P2) +(\n1:\n3) arc[radius = \n3, start angle = \n1, end angle = \n2]
node at ([shift = (P2)] \n4:.5cm) {\(\alpha\)} node[above] at
([shift = (P2)] \n4:\n3) {\pgfmathparse{\n2 - \n1}%
$\pgfmathprintnumber{\pgfmathresult}^{\circ}$
};
\draw[-latex] let
\p0 = (P1),
\p1 = (P2),
\p2 = (O),
\n1 = {atan2((\x1 - \x0) / (\y1 - \y0), 1)}, %see link for explanation here
\n2 = {atan2(\x2 - \x0, \y2 - \y0)},
\n3 = {.75cm},
\n4 = {(\n1 + \n2) / 2}
in (P1) +(\n1:\n3) arc[radius = \n3, start angle = \n1, end angle = \n2]
node at ([shift = (P1)] \n4:.5cm) {\(\beta\)} node[above] at
([shift = (P1)] \n4:\n3) {\pgfmathparse{\n2 - \n1}%
$\pgfmathprintnumber{\pgfmathresult}^{\circ}$
};
\end{tikzpicture}
\end{document}

Per LaRiFaRi comment, the code works as requested if you change
\draw[-latex, red] (O) -- (0:4.5cm) coordinate (P1) node[pos = .5,
below left, rotate = 0]
{\(\mathbf{w}\)};
