Welcome to LQ!
For question 2, the answer is no. Cards can only be configured with one SSID at a time.
For your first question, I don't know of anything that would switch you into a network automatically, but it wouldn't be hard to script something like that. You would have to continually run iwlist to find out what networks are in range and then when it finds one on its list of networks, it reconfigures.
That said, I think this is not going to be as good an idea as you think for a couple of reasons.....First, continually monitoring for networks is going to chew up both bandwidth and processor time. I'm guessing that the performance hit is going to be noticable, even on a good box. Second, my experience is that iwlist can see a network long before it is functionally in range. Depending on the overlap between networks, you could end up dumping a strong signal for a weak one. Finally, if one of the networks you want uses a commonly used SSID (say, oh, "linksys") then your computer could end up having a nervous breakdown if it sees two or more networks with the same name.
A better approach would probably be to use something like KWifiManager, which is capable of storing several network profiles and then switching manually when you need to. I do something similar, only with scripts. I commonly use about 4 different access points over the course of the day and I just run the appropriate script when I change locations.