RFID can read multiple tags in it's field using an anti-collision algorithm. I don't know the specifics of it, but I do know the general idea.
For instance, assume you have 3 cards, each with the following data on them
Card 1: 0001101001
Card 2: 0001000011
Card 3: 0000100010
You'd take your stack of cards and place them on the reader. You'd then send a command to the reader to tell it to initiate a reading. The reader would go out and start reading data. It'd get a 000 (since the first 3 bits on all 3 cards are 0) and would be happy. It would then see a collision at the next bit. The card that tried to respond with a '0' would then be quiet, and the remaining cards would continue talking. At this point the RFID reader knows that there are at least two cards in it's field, and it knows that the bits are:
Card x: 0001??????
Card y: 0000??????
It would continue reading, and would immediately see that there are now at least 3 cards it its field with the following IDs
Card x: 00011?????
Card z: 00010?????
Card y: 0000??????
Card z would then be quiet, and the reader could continue reading to get card X's data. It could then back up and get the rest of card Z's data, and it could then go back and get card y's data. Since no more collisions would be seen, it would then assume that there are only 3 cards in it's field.
Some manufacturers also just have the cards delay for a random amount of time and then send their data. The randomness is fixed for each card, but varies from card to card due to intentional loose manufacturing tolerances.
As far as detecting when a card is present, I'd just have the reader scan for cards every 100 mS or so. If a card is present, the reader will know it. If not, it'll know that too. This assumes that you're not battery powered. If you're battery powered, you'll want to implement a button or use some other type of low power sensor. I used a simple light sensor and read it every 256mS to detect when a card is present.