Pozdrav!

Croatian, Bosnian, and Serbian are spoken in Croatia, Bosnia and Hercegovina, and Serbia and Montenegro. They were all part of Yugoslavia until the 1990's. The three languages are very closely related and in Yugoslavia, they were referred to together as Serbo-Croatian. There are differences though mostly in vocabulary, but also in accent, some conventions of speech, and pronunciation. Croatian and Serbian have also had their own literary standards since the 19th century, and have also developed distinct slang in modern speech.

For pronunciation differences, it gets confusing because all three language standards are based on the neoštokavski dialect, but the Croatian and Serbian standards pronounce the old slavic vowel "jat" differently. The Croatian standard uses ije/je (ijekavski) and Serbian uses e (ekavski) (Croatian: Bijelo - Serbian: Belo). Bosnian also uses ije/je.

This is only partially useful for distinguishing beyond the standard languages though. The vast majority of štokavski/ekavski speakers are Serbian but for the other subdialects there is much overlap. This becomes even more complicated as Croatian has two other major dialects apart from štokavski: čakavski and kajkavski.

Croatian also tends to use more neologisms than Serbian or Bosnian. New words have been created and old words reintroduced. As Pravit wrote, there were political motives behind much of that.

The languages are spoken by about 20 million people.

For alphabets, Serbian uses a unique version of the cyrillic alphabet. Very different from Russian/Bulgarian cyrillic and very interesting.

Croatian uses a form of the latin alphabet which is very similar to the Czech alphabet. Bosnian uses the same alphabet as Croatian.

Unfortunately, I do not know of any comprehensive grammar for these languages on-line.

Hope this was helpful.