Most of the times, it's fine, but sometimes, I'd like to give priority to which app it closes. For example when playing a game, and then quickly going to check emails, or a website, I'd like to be sure that the game won't close up (haven't done too many experiments, but seems like sometimes it exits, sometimes it doesn't...). To really exit a program, you have to press the "back" button, so if you're 10 directories down in the file explorer, you have to press it 11 times. Not that big a deal, it's just a different way of doing things, but not sure it's in the right direction.
If a user later returns to an application that's been killed, Android needs a way to re-launch it in the same state as it was last seen, to preserve the "all applications are running all of the time" experience. This is done by keeping track of the parts of the application the user is aware of (the Activities), and re-starting them with information about the last state they were seen in. This last state is generated each time the user leaves that part of the application, not when it is killed, so that the kernel can later freely kill it without depending on the application to respond correctly at that point. In some ways, Android's process management can be seen as a form of swap space: application processes represent a certain amount of in-use memory; when memory is low, some processes can be killed (swapped out); when those processes are needed again, they can be re-started from their last saved state (swapped in)