There is no functional difference between a system queue and a regular queue. Regular queues are created via the management tree. The Queue Manager Swiftlet implementation (a) provides the management functionality for this and then (b) uses the same methods you can use from other Swiftlets to create the actual queue. (a) is not accessible from other Swiftlets because it's an implementation detail of the Queue Manager Swiftlet implementation. (b) is part of the Queue Manager Swiftlet interface and thus accessible.
System queues are internal queues. Usually their names are prefixed with "rt$", "tmp$" etc. to make them inaccessible from JMS clients. There are a few exceptions like the swiftmqscheduler queue which must be accessible but these queues are still system queues. If you want to change the default attributes for system queues, you must do that via the resp. queue controller.
You can of course use CLI within a Swiftlet. Just use a
intravm connection. I don't know why you got a request timeout but a general rule is: don't block threads. So putiing it into a AsyncTask will unblock it.
The intention of Swiftlets is to add router functionality and not to develop application. General rule is, if you can do it with JMS, do it with JMS. If you can't do it with JMS, create a Swiftlet. If you do it with JMS, you can
hot deploy it like a Swiftlet, can use intravm connections, use CLI (as you do above) to create your resources etc. There is no difference except that you use a standard interface with JMS and without a vendor lockin, and a proprietary interface with Swiftlet API and a vendor lockin.