It might be helpful to look at the database schema (https://www.specifysoftware.org/schema.html) to follow the connections between tables in the back end when designing forms.
1.Gift Agent does not have a connection to Collection Object (it links to Gift). For the donor information, you could work through the Accession table. The Collection Object table links to the Accession table, which could link to an Agent identified as the donor.
2. You could create a new Locality that includes that information or use the Verbatim Locality field in the Collecting Event table (or a Text field in Collecting Event).
3. When you create a record set from a query, I think it carries over the sort order selected there (so maybe there was no sort order picked during the query design?)
4. I’m not sure I understand, but when one is setting up Specify, I recall there was a choice about whether PaleoContext is linked to Collection Object or Collecting Event. Perhaps it was Collecting Event in your configuration. Changing this after establishing a database could be problematic.
5. I see a CollectingEventSubform in common.views.xml that has a few labels and fields. Is that it?