NOTE - if you are a regular QXO user, and not a hardcore programmer QXO user, don't even bother reading this post. It'll scare you! 
Stephen,
I was able to get what you wanted by putting this into a Customer grid, overriding the JobStartDate field:
SELECT Max(DueDateStart) FROM viewActivity WHERE viewActivity.Entity = viewaccCustomer.FullName AND viewActivity.ActivityStatus = 'Completed' AND viewActivity.ActivityType = 'Work Order'
Only problem is that it is delivering the times in UTC time, which for me in Eastern time was 5 hours off. Since it was a date column that I was overriding I was hoping that it would still convert to local time. I'm going to put a ticket in here to see if we can get that done.
1) why does the generator use "viewActivity" instead of the table name of "Activity" ?
-You are getting a peep into the inner layers that make up Method's architecture here. What you see in QXO is a view, not the actual raw table data. Otherwise you would see integers everywhere there is a dropdown instead of the joined table value. So in real life data is stored in Activity but shown to you via viewActivity.
2) is "viewaccCustomer" the name of the current record in the table? Is it tied to the name of the ui table or the database table?
-viewaccCustomer is a filtered view of the the accEntity table, which contains customers, vendors and employees.
-If you are doing a grid based on customers, the "= viewaccCustomer.FullName " portion of the override will be able to link the current record in the grid to override query.
3) In the reports webinar it shows that the link between the Customer Table and the Activity Table is via the Activity.Entity = Customer.RecordID relationship. Is it not the same here?
-The webinar is the user friendly version of what you get a peep into with SQL overrides.
4) are the database functions Min and Max available in the ui column sql override function?
-Yes, just choose SUM and then type over top of it with Min and Max.
5) As shown above.