dot_spacemacs vs init_el
proper file for spacemacs configuration: init.el vs. .spacemacs
The .spacemacs file actually has two places to put configuration code; dotspacemacs/user-init and dotspacemacs/user-config. The user init is run before any layers are loaded and the user config after all layers are loaded. Most code should go in he user config. Though as you said, some code doesn’t work there and needs to be in the user init. This includes variables that need to be loaded before the packages are initialized. AFAIK there is nothing that should need to go in init.el. Everything you have in init.el should be able to go in dotspacemacs/user-init.