Lead dev of Swarm here. First off, glad you're trying out Swarm, hopefully we can get this cleared up :)
1) This sounds like the default behavior for Android. Apps are left running explicitly (code in memory, not actively on the CPU) until the memory is needed, at which time they are evicted. If you're seeing something more than this, it is possible you missed a call to Swarm.setInactive() in one of your activities. We use setActive() and setInactive() as hooks to know when your game is running, and when we should shut down everything on our side.
2) This is configurable. In the manifest there should be a line that says android:process=":swarm". Remove this line and it will be run in the same process as your app. One of Swarm's features is push notifications, and if this feature is used, running in a separate process is highly valuable, because it doesn't require all of the application code to run all the time (saves device memory).
3) You're most definitely not required to show the dashboard ever. The only screen that is required to be shown is the login screen (which like you mentioned, they can click "Play as Guest" to get through quickly). All of this is controlled by the way you call Swarm.init(), and offers callbacks for the full login process (loginStarted(), loginCanceled(), userLoggedIn(), and userLoggedOut()). Please see our docs for more info.