This is my understanding:
It seems that you are on the right track, maybe just missing some minor points.
Surveys are sent, when activity logs gets created, and the related activity type has its send_survey flag set.
To find activity types which initiate the sending of a survey, go to the "Activity Notification List" and enter "cr_send_survey=1" in the "Additional Search Arguments". This will give you the list of activity types initiating a survey sending process for incidents/requests/problems.
Of course, someone with appropriate rights can initiate so called "managed surveys". These surveys are not sent based on ticket activity, but just on the fly, because someone wants to do so.
The survey to send is specified in the Activity Notifcation , but it can be overwritten by the survey of the the actual ticket category(Incident Area)
For a cr ticket a survey will always be sent to the Affected User(customer), not the assignee. This is hardcoded and can not be changed.
Similar rules are reflected for changes and issues.
I hope that helps a bit.
Best regards
..........Michael