> h is pronounced as /x/ sometimes and Romanians don't realize this.
Does the language actually have any minimal pairs where [h] vs [x] makes a difference? Most languages that have a velar fricative have a single phoneme that is either /x/ with [h] as an allophone in some contexts, or /h/ with [x] as an allophone in some contexts. There's no reason to reflect this in spelling if the distinction doesn't actually matter.
> I've heard that Serbian in Cyrillic is very phonetic though.
Serbo-Croatian in all its varieties is almost perfectly phonemic aside from pitch accent. Cyrillic vs Latin doesn't actually matter because even though Latin has more digraphs (lj for љ and nj for њ), they are unambiguous - there's no contrast between "lj" and "l" followed by "j", unlike say Russian where you need to distinguish between "лёд" and "льёт" somehow.
If you want no digraphs at all, Serbian and Montenegrin Cyrillic is still not ideal because "дз" is a digraph. Macedonian fixes it by using the historical Cyrillic "ѕ" [д]зело for /dz/ though, if you want a perfect 1:1 glyph to phoneme mapping.
Cyrillic in general is surprisingly good as a "universal alphabet" if you also consider historical letters and not just the current ones. It has unambiguous glyphs for all labial, alveolar, retroflex, and velar plosives, affricates, and fricatives, a uniform way to represent plain/palatalized/velarized distinction for any consonant, and if you consistently use "ь" for palatalization of consonants you can also repurpose the "soft" vowels to indicate fronting of vowels specifically.
In IPA notation, it's the difference between [ʎɵ] and [ʎjɵ], and contrasting the two is fairly rare in natural languages; East Slavic is somewhat unusual in that regard. If someone's language does not have this contrast, it sounds very similar to them, and distinguishing the two can be very difficult. Even in languages where such a distinction exists, there's a tendency towards a merger - Serbo-Croatian is one example of that, but the same is also happening in e.g. some dialects of Spanish with "ñ" [ɲ] vs "ny" [nj]. English speakers also have this problem with Spanish, by the way, hence why "cañon" became "canyon".
In general, what's perceived as "very different" or not is very subjective based on what one is used to. E.g. the distinction between "v" and "w" is very significant in English, but for speakers of many Slavic languages, those are allophones, and when they learn English they have trouble using them correctly.
True, same for Chinese and their tones. One would think it should be pretty easy to distinguish them, but even when doing basic homework it sometimes hard to tell one from another.
Russian has terminal de-voicing; so /d/ softens to a /t/, hence сад = /sat/. (Sort of; actually it's something in between, but the shift is noticable).
And /l/ palatizes (becomes /lj/) before both е and ё, as in самолёт. (Actually the /j/ is built into ё of course, but somehow it seems helpful to recognize the commonality of the sounds when realized after /l/ - basically е becomes more yoff-like).
The vowel might differ (one may be more fronted or rounded than the other), but that tends to vary among speakers anyway.
Russian has a whole suite of secondary rules like this.
Ukrainian by contrast is much more phonetic. But unlike English, at least Russian has a system.
Does the language actually have any minimal pairs where [h] vs [x] makes a difference? Most languages that have a velar fricative have a single phoneme that is either /x/ with [h] as an allophone in some contexts, or /h/ with [x] as an allophone in some contexts. There's no reason to reflect this in spelling if the distinction doesn't actually matter.
> I've heard that Serbian in Cyrillic is very phonetic though.
Serbo-Croatian in all its varieties is almost perfectly phonemic aside from pitch accent. Cyrillic vs Latin doesn't actually matter because even though Latin has more digraphs (lj for љ and nj for њ), they are unambiguous - there's no contrast between "lj" and "l" followed by "j", unlike say Russian where you need to distinguish between "лёд" and "льёт" somehow.
If you want no digraphs at all, Serbian and Montenegrin Cyrillic is still not ideal because "дз" is a digraph. Macedonian fixes it by using the historical Cyrillic "ѕ" [д]зело for /dz/ though, if you want a perfect 1:1 glyph to phoneme mapping.
Cyrillic in general is surprisingly good as a "universal alphabet" if you also consider historical letters and not just the current ones. It has unambiguous glyphs for all labial, alveolar, retroflex, and velar plosives, affricates, and fricatives, a uniform way to represent plain/palatalized/velarized distinction for any consonant, and if you consistently use "ь" for palatalization of consonants you can also repurpose the "soft" vowels to indicate fronting of vowels specifically.