Olá, Joaquim!
A anotação @JoinColumn é utilizada para mapear uma coluna de chave estrangeira em uma entidade associada. No contexto do último vídeo da aula 2 do curso Kotlin e Spring: segurança e infraestrutura, a anotação @JoinColumn foi utilizada para definir a coluna que faz o relacionamento entre as tabelas usuario e role.
Por exemplo, se você tiver a tabela usuario com uma coluna role_id que faz referência à tabela role, você pode utilizar a anotação @JoinColumn para mapear essa coluna na entidade Usuario. Dessa forma, você estará informando ao framework que essa coluna é responsável pelo relacionamento entre as tabelas.
A diferença entre @JsonIgnore e @JsonIgnoreProperties é que a primeira anotação é utilizada para ignorar um campo específico durante a serialização e a desserialização de um objeto JSON, enquanto a segunda anotação é utilizada para ignorar múltiplos campos de uma classe durante a serialização e a desserialização de um objeto JSON.
Por exemplo, se você tiver uma classe Usuario com os campos id, nome e senha, e quiser ignorar o campo senha ao serializar o objeto para JSON, você pode utilizar a anotação @JsonIgnore no campo senha. Já se você quiser ignorar tanto o campo nome quanto o campo senha, você pode utilizar a anotação @JsonIgnoreProperties({"nome", "senha"}) na classe Usuario.
Espero ter esclarecido suas dúvidas! Se tiver mais alguma pergunta, é só me dizer. Espero ter ajudado e bons estudos!