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
