Is there a way to access the index of a shape in a shape layer? Just like how I can use layer index to talk to specific layers in a comp, I want to talk to specific shapes in a shape layer. Like Rectangle 1. Rectangle Path  or something like that?
There is no absolute index to address. You address this stuff using the .content() method referencing the groups and property streams. The real crux of course is that you may end up writing endless strings of content(Top Group).content(Sub Group).content(Path) and so on just to gain access to a simple value, depending on how deeply you nested your stuff. The actual groups can of course be referenced using their indices just as well, but this gets quite confusing and messy since in fact most of them will simply only have 1 as their number and clearly content(1).content(1).content(1) isn't particulalrly telling. Therefore using the names is much more advisable.
I found a few resources that dig into it a bit. using propertyIndex of the propertyGroup(), but they only explain so much. I am still trying to figure out you to use it for linking individual shapes but it seems so complicated.