All of these initializations, aside from CFA_BACKGROUND_LIMIT = 1, are spurious: objects held in static memory are initialized with zero (false and NULL are both zero).  In C++, colleagues examined the assembler and found that the compiler was generating code to set variables on start-up, where there was an initializer in the source code, despite the fact that it's setting the variable to what the static memory already contains on start-up; I can't be sure the same happens in C (in C++, this is part of the general "initialize global objects at start-up" code, that hast to run constructors &c.), but you can't be sure it doesn't.
There is, of course, pedagogic value to the initializers, making explicit the implicit initialization, so perhaps we can hope the start-up code (if generated) isn't a big enough deal to be worth worrying about.