Clarification on queryInterface vs createInstance

I cant include links in my post, but I have just read the section in the VST3 api documentation called Creation and Initialize from Host point of view

Is it intentional in this example that if the iEditController is retrieved via the queryInterface method, then initalize() is not called?
If so, I presume terminate() should also not be called for this case?

Secondly, according to microsoft docs queryInterface always automatically calls addRef before returning, so the client only needs to call release. However, in the microsoft docs, CreateInstance returns with ref count of 0, so the client would call both addRef and release. What about VST3 createInstance? I assume until now this returns with reference count of 1, but having read this I would appreciate confirmation of that.

Thanks in advance

The first question is for when a plug-in implements the IEditController interface in the same object as the IAudioProcessor. In this case only the initialize method of IAudioProcessor is called.
For the second question, I would really like to see the Microsoft documentation where they say that the reference count is zero for an object created via CreateInstance. I cannot find it and I think that even the objects created on Windows via CreateInstance have not the reference count of zero. But anyway, the IHostApplication::createInstance method will return objects with a reference count of minimum 1.

cant post links, so…

docs.microsoft.[com]/
en-us/cpp/atl/reference/ccomobject-class?view=msvc-160

This was one example, but I saw the same thing mentioned on a few pages

Thanks for the clarificaiton at least i know its 1 within Steinberg