How do I add external labels and connecting lines to a Ternary Plot in R?
Hmmm I'm not familiar with AddtoTernary function, I can see that you've placed a function within the "AddtoTernary" function. The traditional ggplot2 way of doing this would simply be controlled by the theme 

ggtern(data=x,aes(x1,x2,x3)) + 
  geom_point(fill="red",shape=21,size=3) + 
  theme_tern_bw()


This will give an arrow for each axis, but additional code is required for different colours (I'd have to look up my past work). 

I think what you might want is a colour key? In this case ggtern will have a "key" function because ggplot2 has one.Here, your colouring is based on species not on a colour gradient as to how far to the corner of a graph you are.

Alternatively you can easily put names besides each point in ggplot2, but again this is traditional style code. 

Also you can add different shapes to the graph, which might be useful instead of colours.

Arrows and names together peronsally I've not seen on a ggplot2 graphic and I'd have not idea how to do it. 

FYI I don't think we need all the data just a few points fine, although it shows why you prefer arrows - personally I would use colour coding. In "traditional" ggplot2 coding the graphing is built up in layers, so if additional functionality is required it is simply appended to the exisiting command. Thus it is quite easy to make modifications.