Well, I admin it's a bit 'underdocumented'. The reason is that's still an internal API. But no excuses.
Actually it's intended that an Extension Swiftlet creates and removes resources by putting corresponding CLI commands in the resp. sections of the "cli" element of its config.xml (excerpt from docs/router/swiftletapi/deploy/index.html):

In your case you create your queues in "before-install" and remove it in "after-remove". Only in case you can't do it this way, e.g. if you determine the queue name programmatically, you will do it with API-calls directly in your Swiftlet's startup method.
Concerning regular and system queues. Regular queues are user-defined queues, defined via routerconfig.xml, CLI, Explorer. Queues created from Swiftlets are system queues. Swiftlets usually just create it and give users full control over it via the queue controllers. For example, the input queues for the JNDI Swiftlet & Scheduler Swiftlet are created this way.