As for whether it is Е О or Ё:

If you look at it from the point of view of insterting vowels (forming the genitive plural):

O is the hard variant, E is the soft variant:

thus:

окно --> окон (because the K is hard)
марка ---> марок (because P is hard).

But! You must also remember the spelling rule which states than an unstressed O cannot be written after Ш Щ Ж Ч Ц. E must be written instead. Thus:

Девушка ---> Девушек
Девочка ----> Девочек


The fleeting vowel is quite complex. Because at times it must be insterted or removed.

For example if you want to form the genitive plural of a feminine or neuter noun you may need to insert a vowel:

окно ---> окон
сто ---> сот

Note that this form with a zero ending is actually the root of the word. So it can be seen that the fleeting vowel O has fleeted from the root to form the nominative singular form Окно.

Conversley, you may have to genitive plural form and need to know the nominative singular form to look up in the dictionary,

Then there are words that contain the fleeting vowel in the nominative singular form:

рот
день
огонь
отец
лёд

Knowing when to inert a vowel is not that hard.

If we take Окно as an example. To form the genitive plural of neuter nouns ending in O we remove the O:
Окн - This leaves the akward vowel cluster кн, which is seperated with the vowel O, to give окон.

Cто is even a better example. Without inserting a vowel you'd end up with Ст as the genitive plural. This isn't Czech :P


FYI this also occurs in Ukrainian:
July = Липень
But today's date is Тридцяте липня