sem precisar pagar um banco de dados adicional para sua aplicação
Essa afirmação precisa ser mais elaborada. Acredito que você queira dizer que não é necessário configurar um servidor de banco de dados separado para o gerenciador de banco de dados, o que está correto. No entanto, se você executar o H2 em modo servidor, ainda precisará de algum tipo de servidor e talvez ter que pagar por isso.
Outra possibilidade é utilizar o H2 no mesmo servidor onde sua aplicação está sendo executada, assim você não precisará pagar por um servidor extra. Se você utilizar o H2 em modo de memória, ainda segue o mesmo princípio. No entanto, é importante ter em mente que você estará compartilhando o mesmo servidor com outra aplicação.
O PostgreSQL também é gratuito e de código aberto, mas precisa ser executado em algum lugar e você também pode executá-lo na mesma máquina onde sua aplicação está. A diferença é que o H2 é muito mais leve do que o PostgreSQL.
tem como utilizar para os projetos reais?
Depende. Qual é o prejuízo se você perder dados? Qual é o prejuízo de ficar fora do ar momentaneamente?
O H2 é muito bom, mas não pode ser comparado com outras soluções mais robustas (PostgreSQL, Oracle, etc.) porque esse não é o objetivo do H2. Se você pesquisar sobre experiências com o H2, encontrará respostas mistas, algumas com boas experiências e outras com experiências ruins. Você terá que testar seu caso de uso específico e tirar suas próprias conclusões.