Suppose I am working on an application that allows any user to create quizzes and assign them to any other user. The question and the answer of those quizzes should be recorded.
The goal of the application is to be able to recreate the quiz at that particular moment in time and show the answers that a particular user selected. I realize I am missing datefields but before I do that here what I want help on!
How do I deal with the fact that users can create quizzes with 1 question and another user decides to create 100 questions each of random types? .
Should I create a columns in the QuizResults table that can store each type of questiopn?
Should I serialize all the answer in one column? What should I do?
Some obvious things that are worth mentioning:

I would strongly encourage you to least take a look at non-relational databases for this type of design.
I am saying this as two-decades user of relational technology, not an anti-SQL fanatic.
I have learned in the past that these survey oriented applications that have to offer flexibility in terms of both content and the flow and the intricacy of the organization of questions are better served by either document stores such as MongoDB or similar or XML-oriented stores such as MarkLogic (can be pricey).
You can manage both “randomness” or variation of the structure of the answers through meta-data attached to the content, and you can also address versioning which is frequently problem with surveys.
Ultimately, even if you are using relational database I would suggest looking into content-management system addons.
Just an opinion.