I watched last WWDC 2016 What\'s New with CloudKit to understand how to share records with other users using CKShare
Single record sharing:
Regarding question 1, to find the records that have references to the parent, you'll need to create a query that checks the reference field for rootRecordID. This page from Apple has a section discussing retrieval options with code examples.
https://developer.apple.com/library/content/documentation/DataManagement/Conceptual/CloudKitQuickStart/AddingReferences/AddingReferences.html
Regarding question 2, you could constantly poll the server for updated records, but Apple discourages that in one of the WWDC videos since it generates a lot of network traffic (and thus burns through your monthly quota). I suggest adding a subscription notice on the CKshare. That way, you'll be notified when you need to fetch records.