Earlier quoted context omitted.
As much as I hate it for correctness, 2 is better than 3 indeed. No sane developer encodes meaning in the case of the name of the variables, in the overwhelming majority of cases it's a typo.
player = Player() all the time in Python. date = new Date() all the time in JS. Those are just the two languages I spend the most time in, but, but I'm sure it's trivial to find numerous examples of cases carying meaning in case-sensitive languages. Especially ones which encourage camel casing.
For instance, in C#, with capital-case convention for variables, it is common to give a variable the same name as the type.
eg `public Player Player;`