I see that "Syntax highlighting" is loading default colors from XML files in \share\CodeBlocks\lexers.
A lexer for each language has color presets inside, and if I switch around fg and bg values in lexer_cpp.xml or other files, file the colors will indeed be reversed.
However, I don't see an option to create multiple themes inside of the XML files:
<?xml version="1.0"?>
<!DOCTYPE CodeBlocks_lexer_properties>
<CodeBlocks_lexer_properties>
        <Lexer name="C/C++"
                index="3"
                filemasks="*.c,*.cpp,*.cc,*.cxx,*.h,*.hpp,*.hh,*.hxx,*.inl,*.ipp,*.tcc,*.tpp">
                <Style name="Default"
                        index="0,11"
                        fg="255,255,255"
                        bg="0,0,0"
                        bold="0"
                        italics="0"
                        underlined="0"/>
                <Style name="Default (inactive)"
                        index="64,72,75"
                        fg="200,200,200"/>
                <Style name="Comment (normal)"
                        index="1,23"
                        fg="152,152,217"/>
So modifying lexer files would change everything to dark mode only.
If I want to give the ability to change color theme, I need to add that color theme into default.conf file:
	<editor>
		<colour_sets>
			<default />
			<default_dark_mode>
				<NAME>
					<str>
						<![CDATA[default_dark_mode]]>
					</str>
				</NAME>
				<cc>
					<style0>
						<FORE>
							<colour r="233" g="233" b="233" />
						</FORE>
						<BACK>
							<colour r="7" g="7" b="7" />
						</BACK>
						<NAME>
							<str>
								<![CDATA[Default]]>
							</str>
						</NAME>
					</style0>
					<style1>
						<FORE>
							<colour r="233" g="233" b="233" />
						</FORE>
						<BACK>
							<colour r="7" g="7" b="7" />
						</BACK>
						<NAME>
							<str>
								<![CDATA[Default]]>
							</str>
						</NAME>
					</style1>
					<NAME>
						<str>
							<![CDATA[C/C++]]>
						</str>
					</NAME>
				</cc>
			</default_dark_mode>
			<ACTIVE_COLOUR_SET>
				<str>
					<![CDATA[default_dark_mode]]>
				</str>
			</ACTIVE_COLOUR_SET>
			<ACTIVE_LANG>
				<str>
					<![CDATA[C/C++]]>
				</str>
			</ACTIVE_LANG>
		</colour_sets>
But the default.conf file is created only after the first launch of CodeBlocks. What would be the best way to add a new in-built colour theme, which would be visible even without altering the default.conf file?
I see that editorcolourset.cpp contains this, still wondering how to deal with it:
EditorColourSet::EditorColourSet(const wxString& setName)
    : m_Name(setName)
{
    LoadAvailableSets();
    if (setName.IsEmpty())
        m_Name = COLORSET_DEFAULT;
    else
        Load();
}