1. Qlikview uses field names to associate tables. The way to manage the association is by renaming fields so the tables get associated the way you want.
2. One sql statement results in 1 (or zero) tables. If you do the joins in sql then your database creates one recordset that is returned to Qlikview and becomes one table in Qlikview. If you need to get data from different databases and then combine these into one table then any joins need to be created in Qlikview.
And this article is something you might find useful: Understanding Join, Keep and Concatenate
3. The load command preceding the sql statement is called a preceding load. The result of the sql statement is piped into the preceding load statement. This is not always necessary, but sometimes you will want to further process the data using Qlikview specific functions. See this blog post: Preceding Load. Qlikview doesn't understand or parse any sql. Any sql statement is send as-is(*) to the database. It's processed only by the database so should be in the correct sql dialect of the database.
(*) but if qlikview variables are used in the sql statement then those are first replaced with the values that the variables contain.