It would be additionally appreciated if you could explain it without unnecessary talk about compiler defines and config files, which have nothing to do with Lazarus project build modes.
It ain't unnecessary talk as ultimately it is how the compiler (note: compiler, not Lazarus) works.
If you leave out the whole Lazarus build-system (or whatever it is named that is responsible for including packages in a Lazarus project and setting the search-paths for the compiler) then how would one compile a project (any project, including Lazarus projects) ?
Without getting yourself into too much mess, compiler defines and a correct (extensive) config file is what it take to accomplish that. Dunno if lazbuild is able to adapt to such a detailed approach but that could perhaps be an option (I haven't given that much attention as I was more interested in how to compile lazarus projects with fpc).
btw I would not recommend doing all of this for production work but it is a nice exercise.
PS: In case still in doubt -va is the answer