When I was looking for the solutions of How to give a name to \pic, I discovored that it looks like that the problem is only with the code of \tikztostart in the to path and not with the \tikztotarget.
Here is a MWE that shows this (the commented commands are "corrected" by replacing the starting node with explicit coordinates).
\documentclass[tikz,border=3mm]{standalone}
\tikzset{
seagull/.pic={
% Code for a "seagull". Do you see it?...
\coordinate (-left wing) at (-3mm,0);
\coordinate (-head) at (0,0);
\coordinate (-right wing) at (3mm,0);
% \draw (-left wing) to [bend left] (0,0);
\draw (-3mm,0) to [bend left] (-head);
% \draw (-head) to [bend left] (-right wing);
\draw (0,0) to [bend left] (-right wing);
}
}
\begin{document}
\begin{tikzpicture}%\small\sffamily
\pic (Emma) {seagull};
\pic (Alexandra) at (0,1) {seagull};
\draw (Emma-left wing) -- (Alexandra-right wing);
\end{tikzpicture}
\end{document}
So my question is: By looking at the difference between \tikztostart and \tikztotarget can we imagine a fix up ?
Note : I'm not looking for workaround, because in the originals question we can already find : the use of name prefix .., or the replacement of named by explicit coordinates using let ....

\draw (-left wing) -- (0,0);It is related to how the nodes names are collected. – percusse Apr 25 '18 at 16:18--. Onlytopaths with named start coordinate throw errors. Your example do not present the bug when I test it. – Kpym Apr 25 '18 at 23:04