As the documentation notes, the order in which plugins are loaded is not guaranteed, however they should load after the profile does, not before (though not necessarily before the "Execute a command each time this profile is loaded" command executes).
Global variables (I.E. variables without a specific prefix to their name) do not get changed or reset when a profile is reloaded.
Instead of having the "Execute a command each time this profile is loaded" command trigger a profile reload immediately, it may be more reliable to either have the command monitor a variable in a loop that is set by your plugin, or to have the plugin trigger a command that triggers the reload instead.
Though, having a plugin set a bunch of variables when it's loaded without regard for the active profile is bad practice.
It'd make more sense to have the "Execute a command each time this profile is loaded" command execute your plugin (I.E. use the "VA_Invoke1" method, rather than the "VA_Init1" method), wait for it to return, and then reload the profile. This way the order of events is more likely to be correct, and you're not loading a bunch or variables into memory that may not be used at all during the session.