just for basic understanding:
At least in the Incident Object the Survey Flag is set by a SQL Trigger, that sets the flag every 10 Tickets, if I'm not mistaken. You can amend the trigger and the frequency of the surveys directly in SQL.
This flag is later used in the OOTB Processes (the ones that have "with Survey" in their names) where a decision based on that flag is taking a user to a survey plot or straight to the end of the process.
So if you don't like to use the Survey Flag, you don't have to. For example you can just survey every user that opens a ticket in your system, if you send every ticket through the survey path on your process.
Furthermore you don't need to use the existing objects and actions for the survey. You can also create new objects and actions and use them for your survey functionality. But I recommend that you just alter the survey objects to suit your need. It will be less work that you have to do.
There are simple objects containing Booleans, Integers and String attributes to display questions and enable the user to select answers. Since the survey is a collection item, all surveys will be saved and therefore they can be evaluated.
Just have a look at the OOTB Processes with Survey, the corresponding windows and Objects and I think you will understand.