Do not use \pgfmathparse in coordinates or other values of TikZ.
TikZ will parse nearly everything through PGF math anyway which is also the reason it doesn’t work because you can’t use content that is not fully expandable.
You could have used
\draw(a) let \p1 = ($ (a) - (p) $) in \pgfextra{\pgfmathparse{veclen(\x1,\y1) * 3}}
circle [radius=\pgfmathresult pt];
but others have already given better solutions than that.
I want to propose another option: the through library.
It has only one purpose: drawing a circle through on specific point. With the calc library you can now write
\node[draw] at (a) [circle through=($(a)!3!(p)$)] {};
with the same effect.
Without the calc library, this can be reduced to
\node[draw] at (a) [circle through=(p), scale=3] {};
Code
\documentclass[tikz,convert=false]{standalone}
\usetikzlibrary{through,calc}
\begin{document}
\begin{tikzpicture}[thick, dot/.style={shape=circle,inner sep=+0pt, minimum size=+2pt, fill, label={#1}}]
\coordinate[dot=a] (a) at (1,4);
\coordinate[dot=p] (p) at (1,7);
\foreach \cnt[count=\Cnt] in {.25, .5, 1, 1.5, 2}
\node[draw, color=red!\Cnt 0!blue, label={[inner sep=+1pt, red!\Cnt 0!blue]below:$ f = \cnt$}] at (a) [circle through=($(a)!\cnt!(p)$)] {};
\end{tikzpicture}
\begin{tikzpicture}[thick, dot/.style={shape=circle,inner sep=+0pt, minimum size=+2pt, fill, label={#1}}]
\coordinate[dot=a] (a) at (1,4);
\coordinate[dot=p] (p) at (1,5);
\node[draw] at (a) [circle through=(p), scale=3] {};
\end{tikzpicture}
\end{document}
Output
