From the many friends that I have in this area, here's how I was told that things are in south Slavic languages:
Most of the languages of ex-Yugoslavia are completely understandable (and aren't really different "languages" in the real meaning of the word, save for 2). Serbian, Croatian, and Bosnian are completely mutually understandable. Serbian is sometimes written in the Cyrillic alphabet which makes it slightly harder, but the Latin version of it is quite widespread and probably already more common than the other. Those are "different languages" almost only because of political reasons.
Slovenian is further away, but can be understood and can be spoken by those I named above if they have time to accommodate themselves with it.
Macedonian is yet further away, being much closer to Bulgarian than the others mentioned so far.
Bulgarian is further than them all. Still somewhat understandable, and two speakers of, say, Bulgarian and Serbian, usually are able to form a "made-up language" so they can communicate, but it takes some practice. However, again, this one is further away, and they do usually need a period of accommodation with the language in order to communicate without problems, and probably a few months of usage to learn to really not make many mistakes. Edit: Oh and don't forget Bulgarian is spelled with the Cyrillic alphabet too. That makes it even harder for those that aren't spelled this way.
Some historians suggest that the difference between Serbian and Bulgarian is bigger than the other differences because when the Slavs migrated in the area there was a (North-South) Romanian -> Albanian -> Greek buffer zone which separated them and caused them to evolve in a more different fashion than the other neighbors.
There are really only two "blocks" of languages in the south Slavic group, a Serbian-Croatian-Bosnian one and a Bulgarian one, each of them having an off-shoot (Slovenian and Macedonian).
Again, I don't speak a word of those languages so anyone who knows better feel free to correct me.
