Der Befehl `\funktion` berechnet nichts. Damit ist
macht
    \newcommand*\ableitung[1]{(\funktion{#1+0.01}-\funktion{#1})/0.01}
zu 
bei Verwendung des von Dir definierten `\funktion` das gleiche wie
    \newcommand*\ableitung[1]{((#1+0.01)^2 +1-(#1)^2 +1)/0.01}
Beachte das `+` vor der zweiten `1` im Dividenden.
Dividenden. Die Ableitung wird dadurch sehr viel größer und die Tangente entsprechend steiler.
Du müsstest also die Summe in Deiner Definition von `\funktion` noch in runde Klammern setzen, um das gewünschte Ergebnis zu erhalten:
    \newcommand*\funktion[1]{((#1)^2 +1)} 
![alt text][1]
Alternativ kannst Du auch die Bibliothek `math` nutzen:
    \documentclass[margin=5mm]{standalone} 
    \usepackage[ngerman]{babel}
    \usepackage{pgfplots}
    \pgfplotsset{compat=1.9}
    \usetikzlibrary{math}
    \begin{document} 
    \begin{tikzpicture}[font=\footnotesize] 
      \tikzmath{
        function funktion(\x)
          {return \x^2+1;};
        function ableitung(\x)
          {return (funktion(\x+0.01)-funktion(\x))/0.01;};
        function tangente(\x, \u)
          {return ableitung(\u)*(\x-\u)+funktion(\u);};
      }
      \begin{axis}[
        axis lines=middle, enlargelimits,
          xlabel=$x$,xlabel style={anchor=north},xtick=\empty,
          ylabel=$y$,ylabel style={anchor=east},%ytick=\empty,
          x axis line style = {-latex}, y axis line style = {-latex},
        ]
        \addplot[domain=-3:3,samples=200]{funktion(x)};
        % Tangente zeichnen in T(u, f(u))
        \pgfmathsetmacro{\u}{1} % Berührstelle u eingeben
        \pgfmathsetmacro{\Laenge}{1.25} % Länge der Tangente eingeben
        % Tangente
        \addplot[domain=\u-\Laenge:\u+\Laenge, red]{tangente(x,\u)};
        % Koordinaten des Berührpunktes und seiner Fusspunkte
        \coordinate (P) at (axis cs: \u,{funktion(\u)}) ;
        \coordinate (Q) at (axis cs:0,{funktion(\u)}) ;
        \coordinate (R) at (axis cs:\u,0) ;
        \draw[red,dotted] (P) -- (Q) node[left] {$f(u)$} ;
        \draw[red,dotted] (P) -- (R) node[below] {$u$} ;
        % Berührpunkt T(u, f(u))
        \draw[red, fill=white] (axis cs: \u, {funktion(\u)}) circle[radius=1.5pt] node[above, red] {$T$};
      \end{axis}
    \end{tikzpicture}
    \end{document}
Wenn Du `compat` auf eine aktuellere Version einstellen würdest, könntest Du Dir übrigens die ganzen `axis cs` sparen.
  [1]: http://texwelt.de/wissen/upfiles/tw_funktionplot.png