They're mutually intelligible. There are some lexical and grammatical differences but I'm told that - for example - when young folk from those countries go on holiday and meet people from those areas they'll say something like "Let's speak 'in ours'" and they'll understand one another.
There can be problems with false friends, however. I hope that I'm getting this right...
In Serbian, a suitcase is 'kofer'; in Croatian it can be kofer or 'kovčeg'. However, the latter in Serbian is the word for a coffin. (It can also mean 'chest' in both languages.)
You see online jokes about how people from former Yugoslavia are so clever that they now speak 4 languages where they used to know one...
The Slovenes have their own language, where the grammar is, IMO, more complicated - they have (I recall) a dual verb. Macedonian is also different, but you'll get Bulgarians claiming that it's 'only bad Macedonian'. All the languages are related.
Before Yugoslavia broke up, kids would be required to learn Serbo-Croatian at school in addition to their native language, so - for example - Melania Trump would be fluent in both Slovene and Serbo-Croatian. The same for Macedonian kids.
As I understand it, the other kids just learned their own variant but were made aware of other variants through literature. Kids in Serbia, Montenegro and Macedonia were expected to learn both the Latin and Cyrillic alphabets. I'm not sure about the other countries
I saw some young folk discussing this online yesterday and some of the Croats were saying that they'd learned Cyrillic out of interest, but that it's not taught in schools now. I think they said that their parents had to learn it in school.
If you look at posters and whatnot from the Communist era, Tito had two signatures - one in Cyrillic and one in Latin. (Tito was a Croat, though I've seen rumours that he was a Russian doppelganger...)