You are loading calc, so
\documentclass[tikz,margin=3]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw (0,0) coordinate (b) -- (5,0) coordinate (c) -- (1,4) coordinate (a) -- cycle;
\draw let \p1=($(b)-(a)$),\n1={veclen(\x1,\y1)} in
(0,0) node {\n1} circle [radius=\n1];
\end{tikzpicture}
\end{document}

It is, however, possible to create a function distance that returns the distance between two named coordinates. It can be used, and gets parsed, like any other function. It does not create a path. HOWEVER, MY PREVIOUS EXAMPLE USING IT IN A PATH WAS DANGEROUS AND IS IN GENERAL WRONG. I thank JouleV top reporting this to me! It even works outside of tikzpictures. (This function here is tailored to resemble your original function.)
\documentclass[tikz,margin=3]{standalone}
\makeatletter
\pgfmathdeclarefunction{distance}{2}{%
\begingroup%
\pgfextractx{\pgf@xa}{\pgfpointanchor{#1}{center}}%
\pgfextracty{\pgf@ya}{\pgfpointanchor{#1}{center}}%
\pgfextractx{\pgf@xb}{\pgfpointanchor{#2}{center}}%
\pgfextracty{\pgf@yb}{\pgfpointanchor{#2}{center}}%
\pgfmathparse{veclen(\pgf@xa-\pgf@xb,\pgf@ya-\pgf@yb)}%
\pgfmathsmuggle\pgfmathresult\endgroup%
}%
\makeatother
\begin{document}
\begin{tikzpicture}
\draw (0,0) coordinate (b) -- (5,0) coordinate (c) -- (1,4) coordinate (a) -- cycle;
\pgfmathsetmacro{\mydist}{distance("a","b")}
\path node {\mydist};
\draw (0,0) circle [radius=\mydist pt];
\end{tikzpicture}
\end{document}

ADDENDUM: I agree with Alain Matthes that veclen is imprecise. This is just to mention that you do not need xfp to solve the problem, computing the Euclidean distance is sufficient. And I also think that tkz-euclide is great, but one does not need it in order to convert the result to cm, a simple \pgfmathparse{<whatever>/1cm} is sufficient.
\documentclass[tikz,margin=3]{standalone}
\makeatletter
\pgfmathdeclarefunction{distance}{2}{%
\begingroup%
\pgfextractx{\pgf@xa}{\pgfpointanchor{#1}{center}}%
\pgfextracty{\pgf@ya}{\pgfpointanchor{#1}{center}}%
\pgfextractx{\pgf@xb}{\pgfpointanchor{#2}{center}}%
\pgfextracty{\pgf@yb}{\pgfpointanchor{#2}{center}}%
\pgfmathparse{sqrt((\pgf@xa-\pgf@xb)*(\pgf@xa-\pgf@xb)+(\pgf@ya-\pgf@yb)*(\pgf@ya-\pgf@yb))}%
\pgfmathsmuggle\pgfmathresult\endgroup%
}%
\makeatother
\begin{document}
\begin{tikzpicture}
\draw (0,0) coordinate (b) -- (40pt,0)
coordinate (c) -- (40pt,30pt)
coordinate (a) -- cycle;
\pgfmathsetmacro{\mydistance}{distance("a","b")}
\path node
{$\pgfmathprintnumber{\mydistance}\,\mathrm{pt}=
\pgfmathparse{\mydistance/1cm}\pgfmathprintnumber{\pgfmathresult}\,\mathrm{cm}$};
\draw (0,0) circle [radius={\mydistance pt}];
\end{tikzpicture}
\end{document}

There is, though an advantage of xfp: it does not collapse when one has large distances. The same is true for the fpu library, which is made for this and used e.g. in pgfplots. One can use this in "ordinary TikZ, too. This yields a version that is immune to large values, and (rather) precise.
\documentclass[tikz,margin=3]{standalone}
\usetikzlibrary{fpu}
\newcommand{\pgfmathparseFPU}[1]{\begingroup%
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}%
\pgfmathparse{#1}%
\pgfmathsmuggle\pgfmathresult\endgroup}
\makeatletter
\pgfmathdeclarefunction{distance}{2}{%
\begingroup%
\pgfextractx{\pgf@xa}{\pgfpointanchor{#1}{center}}%
\pgfextracty{\pgf@ya}{\pgfpointanchor{#1}{center}}%
\pgfextractx{\pgf@xb}{\pgfpointanchor{#2}{center}}%
\pgfextracty{\pgf@yb}{\pgfpointanchor{#2}{center}}%
\pgfmathparseFPU{sqrt((\pgf@xa-\pgf@xb)*(\pgf@xa-\pgf@xb)+(\pgf@ya-\pgf@yb)*(\pgf@ya-\pgf@yb))}%
\pgfmathsmuggle\pgfmathresult\endgroup%
}%
\makeatother
\begin{document}
\begin{tikzpicture}
\draw (0,0) coordinate (b) -- (40pt,0)
coordinate (c) -- (40pt,30pt)
coordinate (a) -- cycle;
\pgfmathsetmacro{\mydistance}{distance("a","b")}
\path node
{$\pgfmathprintnumber{\mydistance}\,\mathrm{pt}=
\pgfmathparse{\mydistance/1cm}\pgfmathprintnumber{\pgfmathresult}\,\mathrm{cm}$};
\draw (0,0) circle [radius={distance("a","b")}];
\end{tikzpicture}
\end{document}
\pgfmathsmuggle. I'd never seen this before! – Dec 23 '19 at 13:48fpudidn't exist. :( I have a problem with your last code. It does not compile. I used\pgfmathparse{distance("a","b")}\let\dd\pgfmathresult \draw (0,0) circle [radius=\dd pt];to get the circle – Alain Matthes Dec 24 '19 at 07:43Latex Error: ./distance_cat.tex:17 Package pgfkeys Error: I do not know the key '/tikz/"b")– Alain Matthes Dec 24 '19 at 08:00/tikz/"b". The declaration of the function does not even require TikZ, just pgf. Strange. – Dec 24 '19 at 13:15