and if it is to be changed (the dns), how and who would make such a change?? i don't understand very well
I think all those DNS names are controlled by core Bitcoin developers sipa, BlueMatt, Luke-Jr, and
jgarzik (who seems to own xf2.org). So they would each have to make the change. I don't know the procedure, or how often it is updated, which nodes they put on those lists, etc.
The bootstrap process finds nodes in many channels such as irc, dns. They are hardcoded though, if they all are taken down at once, the network dies.
Only people connecting to the network for the first time would be catastrophically affected. Actually, I just found that IRC seeding has
been removed. It is unlikely that 4 different DNS servers on 3 top-level domains would all be out. And if they are, there are also dozens of hardcoded seed IP addresses that are contacted, so those would also all have to be down. I don't know how those seeds were chosen, but I trust it's a pretty solid selection. Really, if it's that bad, you may as well say there's no Bitcoin network left to connect to anyway. Also, as long as you can manually find one peer's IP address, you can use that to find everyone else it knows about.
So, once a wallet connects to the nodes specified in the source code it receives a list of all other known nodes. Does the wallet save all of these addresses or does it just download them each time it connects?
Downying seems to say that if all of the hardcoded nodes leave at once no one can connect? In other words the wallet does not save addresses. Is that accurate?
The addresses are saved, in either peers.dat or addr.dat (peers in newer versions). The bootstrapping/seed process is only used if the file doesn't exist or none of the nodes in it can be connected to. And once you've connected to a node you get a list of all the nodes it knows about, and you remember them in peers.dat.
If necessary, I believe you can also configure specific addresses that you want to connect to in a ".conf" file of some sort?
Yes, if you run bitcoin-qt --help you can see all the configuration options, which can be specified on the commandline or in the .conf file. There is -connect (connect only to the specified nodes) and -seednode (use the specified node to get a list of nodes to connect to) that I see being relevant to this, maybe more I missed.