The ## implies "unofficial" channel, so if you have #lego and ##lego then #lego is the "official" channel that is claimed by the official Lego corporation, and ##lego is unofficial people helping out.
The +ifm refers to channel "modes". +i is "invitation only", meaning that you can't join a channel you haven't been invited to. This isn't good for FOSS things, because anyone should be able to join. +f generally is anti-flooding, so you get kicked out of the channel if you send more than X messages per Y period of time, and +m is "moderated" or "mute" meaning that everyone in the channel can see what is being said, but only people that have been approved can actually chat. Again, not really conducive to the spirit of FOSS.
Your explanation only makes things more confusing. So if you try to join #foo you are redirected to ##foo which is invitation only, which just means you fail to join? Why not just make #foo invitation only instead? And why are there still people in #foo? Why not kick them?
Sorry, so what happened was #foo was made invite only (+i), moderated (+m), and throttled (+f), so anyone who is in #foo is silenced and can't chat. Simultaneously, everyone was added to ##foo which is neither moderated nor invite-only. Freenode will grant operator access to #foo if you can prove that you're the official person for #foo, somehow. (I don't know the process). Once you have proven that, the new operator can change the modes again and make it open to everyone (or not).
Last night, hundreds of channels were effectively closed by muting everyone and making the channels invite-only and kicking everyone over to the ##foo unofficial channels.
I'm not super familiar with irc, what is the significance of this? What does creating a second channel accomplish?