If daemon is Disabled, the user has to call StartRefresh() manually once the matrix is created, to leave the decision to become a daemon after the call (which requires that no threads have been started yet). In the other cases (Off or On), the choice is already made, so the thread is conveniently already started for you.
Not recommended unless you have a specific reason for it (e.g. you need root to access other hardware or you do the privilege dropping yourself).
By default, the gpio is initialized for you, but if you want to manually do that yourself, set this flag to false. Then, you have to initialize the matrix yourself with SetGPIO().
Drop privileges from 'root' to 'daemon' once the hardware is initialized. This is usually a good idea unless you need to stay on elevated privs.
The Raspberry Pi starting with Pi2 are putting out data too fast for almost all LED panels I have seen. In this case, you want to slow down writing to GPIO. Zero for this parameter means 'no slowdown'.
The default 1 (one) typically works fine, but often you have to even go further by setting it to 2 (two). If you have a Raspberry Pi with a slower processor (Model A, A+, B+, Zero), then a value of 0 (zero) might work and is desirable.
A Raspberry Pi 3 or Pi4 might even need higher values for the panels to be happy.
Runtime options to simplify doing common things for many programs such as dropping privileges and becoming a daemon.