It’s talked about some in the ioquake3 README.
There is the engine (client, server) and three QVM/DLL modules (game, cgame, and ui). Mods and standalone games start from the Quake 3 game logic module code. (Preferably the code maintained in ioquake3 rather than the old Q3 SDK that old tutorials recommend.) So even standalone games effectively start as modifying Quake 3 so it’s useful to use the Quake 3 data to understand things and get it running.
The difference is mods inherit Quake 3 data and standalone games can also change the engine. Run mods with ioquake3 +set fs_game mygamedir
and standalone games with ioquake3 +set com_basegame mygamedir
(see the ioquake3 README section I linked for other things to change).
I wrote more about how to go about it previously. Learning quake3 modding — Ioquake3: Where do I get started? (dev)
Other resources: