I wanted to know if it’s possible to write general purpose plugins.
For example - separate the logic of the program from the GUI by implementing the main component of the main DocumentWindow in a plugin and loading it on startup.

Anything’s possible, but why would you want to do that? Any kind of plugin is best avoided unless there’s an absolutely compelling reason to use them.

Just wanted to know if general purpose plugins have native support like audio plugins do.

No… I’m not really sure what you mean by a “general purpose” plugin, but I’ve not got anything to support that!