2. My fail, I used MB2 instead of MB2.1
i looks like you have an up-to-date MusicBeeInterface file but using the old method for loading the interface (i expect because thats how the old lyrics plugin did it). See the example file included with the download
replace:
this.musicBee = (MusicBeeApiInterface)Marshal.PtrToStructure(apiPtr, typeof(MusicBeeApiInterface));
with:
this.musicBee = new MusicBeeApiInterface();
this.musicBee.Initialise(apiPtr);
that way it will not crash if you are using MB 2.0
for 1, having a quick look at the code you should move the initialisation logic to NotificationType.PluginStartup in ReceiveNotification(...)
the Initialise(...) function only gets called once whereas NotificationType.PluginStartup is called each time the plugin is enabled and wont be called if the plugin is disabled.
you should also call:
mbApiInterface.Setting_GetPersistentStoragePath()
to get the path for writing any settings/ working files.