You’re correct in that rotation determines whether the location can be rotated as necessary in mapgen.
For instance, the LMOE shelter is “rotate”: false. This means that both the above ground and below ground part of the shelter will always spawn in the orientation as shown in the original entry.
You can tell this by going into the debug menu, pressing ‘g’, then pressing ‘o’ and using ‘/’ to search for LMOE. It will display only two entries, lmoe, and lmoe_under. If it was rotatable, this list would have four entries for each, such as lmoe_north, lmoe_east, lmoe_south, etc. etc.
Anyway . . . “locations” does refer to where it should spawn. Easy enough. Things like the shipwreck use “water”.
I do wish I had more information about the others, I mostly only know what mlangsdorf has already pointed out. Most of the following information is my own anecdotal experience and may actually be incorrect, so, take it skeptically.
“existing”, I think, refers to whether it will attempt to attach to that terrain as it already exists or if it will generate that terrain when it spawns. IE: Does the road have to exist first, or does the location exist and then the road is spawned after. I could be very wrong about this, it’s just the best I can figure.
You should be able to attach any terrain using this, however, I have not used it for this. I believe that’s how you would make a dock, for instance, ensuring that it would spawn adjacent to water.
Again, could be wrong.
If you specify no connection, it will just spawn where there’s an empty place for it that matches the rest of the mapgen, like the cabin. If you specify a connection but don’t assign a terrain, I assume it just won’t work and will kick an error.