A friend of mine mentioned to me a while back from now that it should be "Во" instead of "В", but he does not know of the definite rule for the difference.
There is no difference in meaning. "Во рту" can be pronounced easier then "В рту". Follow this rule: https://rus.stackexchange.com/questions/416895/Предлог-в-или-во
- If word starts with two consonants and word consists of one syllable, preposition "в" becomes "во". (example: "во рту", "во мне", "во сне", но "в слезах", "в сновидениях").
- If word starts with two consonants and one of them is "в": во власти, во внушении.
The difference is that you don't say в рту. (While on the other hand, I think you do say в рте rather than во рте, in those rare instances where you'd use that form at all.)
There is no reliable rule because the phenomenon itself is highly inconsistent — similar to how you can sort-of-but-not-really predict the "strongness" of verbs in English (cut/cut vs. strut/strutted). And this, too, is something that gets spoken of in terms of "strong" and "weak" things — namely strong and weak yers, per Havlík's law. The
-о on prepositions is usually a strong yer, i.e. a former
-ъ that got upgraded to a full vowel because of a yer in the next syllable — which in its turn disappeared, leaving us with a consonant cluster. That explains why во tends to be present around consonant clusters, especially those that begin with
в- (ditto со and
What it doesn't explain, of course, is why it's so sporadic. The answer is, because it essentially shouldn't be there at all: Russian went on to level out this particular complication, but sometimes the need for easier pronunciation as well as frequency of usage conspired to preserve those remnants.
Additionally, there's an even smaller handful of expressions where the
-о occurs despite no consonant clusters in sight: во имя, во веки веков, etc. All of them come from that slightly rephoneticised Russian variant of Church Slavonic, which grew preposition-final
-о very liberally.
I think Havlík's law, mentioned by Nikolaj above, does explain at least some of the seeming randomness. Jers were strong in a syllable that's followed by a syllable with a weak jer, so whether the jer in въ was strong depended on the next word. If that word's first syllable had a weak jer, the jer in въ was strong, and become -о-. If the first syllable of the next word didn't have a weak jer, then the jer in въ was weak, and disappeared.
That's why we say во сне (сон used to be сънъ), but в снегу (снег comes from снѣгъ).
And there are also the other issues mentioned by Nikolaj, just to keep things interesting. :)