The SDK mentions that we can create 'Automation', 'Export', etc plugins with C++? Do these types have their limitations? For example, can't an 'Export' plugin access the whole API exposed to an 'Automation' plugin? Or is the only difference being shown in different sections in the menus?
What i need is to build a general-purpose plugin that might have to use some export functionality along with selection and 3D features.
The short answer is yes, in addition to their location under different sections in the PS menu, each plugin has it's own internal limitations, sequence of invocation etc. The closest you can get to the "general purpose" plugin is an automation plugin as it can be triggered upon various events and can also invoke other plugins, A common approach when developing a plugin with mixed functionality is to have a main "dispatcher" automation plugin that either invokes other plugins as helpers (e.g. a hidden filter to process pixel data) or is invoked by other plugins either upon the events or via an exported suite. You may to browse the Automation examples in the SDK samplecode folder.
I would also suggest looking into the "Plugin modules" section of the SDK documentation - it should have the information you need in terms of structure, limitations etc The FAQ section is also worh reading.