Welcome! It may be impossible to answer the question in the way you seem to imagine since you are comparing two very different constructions, foreach loops and arrays. In arrays the counting starts from zero while the count in foreach starts at 1 by default but you can change that:
\documentclass{article}
\usepackage{tikz}
%\usetikzlibrary{calc} % not needed here
\newcommand\Tpos{( 0.5, 0.0), ( 2.0, 0.0), (-1.0,-1.0)}
\newcommand\Tname{"A", "B", "C"}
\begin{document}
\begin{tikzpicture}
\foreach \pos [count=\i starting from 0] in \Tpos {
\node [draw=black,circle,inner sep=2pt,minimum size=4mm] (pt\i)
[at=\pos] {\pgfmathparse{{\Tname}[\i]}\pgfmathresult};
}
\draw (pt0) -- (pt1) -- (pt2);
\end{tikzpicture}
\end{document}
Now the count starts at 0. As for the double braces, this is because one comes from the \newcommand (or \def) syntax, and the other from the array function of pgf. In the example above I have wrapped it around \Tname in \pgfmathparse{{\Tname}[\i]} but the short answer is: yes, you need "double" braces here in one way or the other.
ADDENDUM: As for the additional question in the comments: you may just work with arrays to come close to the intended usage. If you use
\newcommand\Tarray{"( 0.5, 0.0)","( 2.0, 0.0)","(-1.0,-1.0)"}
then a single coordinate can be added with
\path
node[draw=red,circle,inner sep=2pt,minimum size=4mm]
[/utils/exec=\pgfmathparse{{\Tarray}[\myindex]},at=\pgfmathresult ]
{\pgfmathparse{{\Tname}[\myindex]}\pgfmathresult};
Full example:
\documentclass{article}
\usepackage{tikz}
\newcommand\Tarray{"( 0.5, 0.0)","( 2.0, 0.0)","(-1.0,-1.0)"}
\newcommand\Tname{"A", "B", "C"}
\begin{document}
\begin{tikzpicture}
\foreach \i in {0,1,2} {
\node [draw=black,circle,inner sep=2pt,minimum size=4mm] (pt\i)
[/utils/exec=\pgfmathparse{{\Tarray}[\i]},at=\pgfmathresult]
{\pgfmathparse{{\Tname}[\i]}\pgfmathresult};
}
\draw (pt0) -- (pt1) -- (pt2);
\pgfmathtruncatemacro{\myindex}{1}
\path
node[draw=red,circle,inner sep=2pt,minimum size=4mm]
[/utils/exec=\pgfmathparse{{\Tarray}[\myindex]},at=\pgfmathresult ]
{\pgfmathparse{{\Tname}[\myindex]}\pgfmathresult};
\end{tikzpicture}
\end{document}

\coordinate [at= {\pgfmathparse{{\Tpos}[8]}\pgfmathresult}, name=pt8];
results is the error:
! Package tikz Error: Cannot parse this coordinate.
And the
– Alain Girault Mar 16 '20 at 16:05