A ideia de usar o I é gambiarra. Havia problemas de conflito de nomes e o I foi usado para resolver isso. Você não tem que saber se é uma interface ou não. A ideia toda do mecanismo é não precisar isso. Mas pode ter casos que saber seja útil, aí você precisa saber muito mais do que só se é interface.

Mas mesmo que tenha uma só classe usando a interface não quer dizer que no futuro não possa ter outras e se você não tinha criado a interface quando acontecer isso todo lugar usou a classe e agora não é algo genérico e você terá que mexer em todo seu código, e se não tiver acesso a todo ele a desgraça está feita, por exemplo o .NET não tem acesso ao seu código. Veja mais: https://pt.stackoverflow.com/q/86484/101. Também pode ser útil: https://pt.stackoverflow.com/q/107524/101.

Se entendi sobre as chaves eu uso a de baixo, não existe um padrão oficial de C# como deve usar. O fato de ter um template do Visual Studio que põe assim significa que o pessoal do VS prefere assim. Hoje boa parte das pessoas preferem o primeiro, programadores raiz tendem a preferir mais o segundo, acham que o código fica mais limpo assim.

Usar _ para campos privados não é padrão de C#, algumas pessoas usam, mas é opção delas. Embora não seja uma recomendação explícita é desincentivado. É gambiarra. Não importa que até dentro do .NET use coisas assim, vai contra o estilo, e mais amplamente considerado algo ruim, quem o faz é por vício, e apesar de não grandes, traz problemas.

C# usa camelCase para variáveis locais, então faz sentido que algo de maior importância seja diferente e tenha mais destaque, e o PascalCase funciona bem. A pergunta é por que outras linguagens modernas copiaram antigas que tem um padrão menos óbvio?

Para ver mais: https://pt.stackoverflow.com/a/32665/101.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).