When joining tables with "ExecuteSQL", do the joining tables in Filemaker need to be from the same data solution?
No. As long as there are TOs on the graph for the tables you want, then you are fine.
That depends on how you define "same solution".
The only requirement AFAIK is that a table must be represented as a table occurrence on the current file's Relationship Graph, since that is how ExecuteSQL() addresses tables.
Retrieving data ...