Inserting text inside an arrow in Tikz

You can perfectly use the shapes library for this. Use \usetikzlibrary{shapes.arrows}. Based on an example from the TikZ manual, page 441:

\documentclass{article}

\usepackage{tikz}
    \usetikzlibrary{shapes.arrows}

\begin{document}
    \begin{tikzpicture}[every node/.style={single arrow, draw=none, rotate=60}]
        \node [fill=red!50] {arrow 1};
        \node [fill=blue!50, single arrow head indent=1ex] at (1.5,0) {arrow 2};
    \end{tikzpicture}
\end{document}

This gives:

enter image description here


Those are two quite different questions, answering the one in the title:

If you simply add a node along the line, it will be printed on top of the line (unless otherwise specified). You have to change the color though, as the color specification of the \draw command also applies to the node.

For non-horizontal arrows add sloped to the node options.

enter image description here

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (0,0);
\coordinate (b) at (6,0);
\coordinate (c) at (45:6);

\draw[->, >=latex, blue!20!white, line width=15pt] (a) to node[black]{text} (b);
\draw[->, >=latex, blue!20!white, line width=15pt] (a) to node[black,sloped]{text} (c);
\end{tikzpicture}
\end{document}