Kernel parameters as just keys that could be used by kernel and its modules (and some user-space processes like
init (runlevels) or "systemd" (targets). I can create module that accepts
unicorn parameter. You may pass
unicorn=42 to your current kernel (try it!) without any harm. But nothing will happen because there is no module to read it.
So, there is no such thing as "list of all parameters". They depend on kernel features and its modules.
Correct approach is to read kernel documentation for each feature/module to find list of available parameters.
Some of them like
init are widely used: https://www.cyberciti.biz/tips/10-boot-time-parameters-you-should-know-about-the-linux-kernel.html
vga=... is good example too: https://www.kernel.org/doc/Documentation/fb/vesafb.txt (read framebuffer manual below to know more about it)
If you are familiar with Windows, kernel parameters are like registry: there is no "all registry keys" but each application/subsystems has some. But kernel parameters are much better documented;)
Systemd (user level daemon!) uses
systemd.unit= parameter and you may know about it by reading its documentation.