Brito, tudo bem?
Quanto ao lance do ponto (.) para separação de casa decimal, é normal e cá entre nós, como no Java (e basicamente todas linguagens que conheço) também trabalha assim, vai ficar mais simples pra vc.
Tente encarar pelo lado que os dados armazenados e tratados internamente na aplicação são dados brutos, a troca de virgula (,) por ponto (.) vai ser um acabamento que vc vai dar para apresentação para o usuário final.
Quanto ao uso do BigDecimal, para tratar valores ele é melhor por causa da “precisão dele” e os tratamentos que vc consegue fazer, por exemplo, duas casas decimais apenas e por ai vai. O lance da precisão é mais ou menos pelo seguinte, imagine que em java 0 / 0 = exceção e 0L / 0L = 0.0000alguma coisa … número double não dá erro de divisão por zero, é primitivo e por isso vc vai ter mais trabalho pra criar esquemas de, por exemplo, limitar em duas casas decimais (porque vc vai ter que implementar) e coisas assim.
Quanto ao esquema do real e money, eu não sei te dizer a diferença, mas acredito que seja em relação a tamanho máximo aceito, por exemplo, imagine a diferença de int pra long, float pra double, acredito que seja mais ou menos na mesma linha. Procure algum material falando sobre os tipos de dados do banco que vc acha isso fácil.
Bom, espero ter ajudado em alguma coisa, caso precise ou veja que alguma coisa que escrevi esteja errada é só avisar.
[]´s