There are various loading phases available, something like PreDefault, PostConfigInit and so on. I’m pretty much sure the PreDefault phase happens right after core system initializations, such as UObject, just make sure to not depend on anything that will load after this.
You should have access to engine functions when you link your plugin against Engine module; config files variables are stored somewhere inside UEngine or inside some of UEngine-derived class, you should have access to it via GEngine variable if i recall correctly.
Regarding the rescan case, many of “out of the box” plugins require editor restart to function properly, nothing bad will happen if your plugin will do the same ![]()
Edit: you can look at loading phases in Source\Runtime\Projects\Public\ModuleDescriptor.h. PostConfigInit seems to suit your needs just fine.
Also take a look at Source\Runtime\Engine\Classes\Engine\CollisionProfile.h. Things might be a little bit easier.