Digamos que temos isso:
senha: senha123
salt: salt456 (gerado randomicamente)
Bcrypt vai criar um hash da sua senha utilizando o salt com uma funcao do tipo:
hashSenha = gerarHashSenha(salt, senha)
Digamos q o resultado de hashSenha seja #@$$%^$.
No banco, será armazenado a senha hasheada e o salt :
salt456#@$$%^$
Quando for fazer o login, para fazer a comparação extrai-se o salt para aplicar aquela função de hashear gerarHashSenha() mas agora com o dado da senha pego do formulário de login. Então se compara esse resultado com aquela senha hasheada do banco.
Veja que como é hash não é necessário descriptografar, apenas gerar novamente a senha hasheada utilizando o mesmo salt e comparar com o que está salvo no banco de dados para autenticar o usuário.
No registro do banco tb tem informações da versão do bcrypt e os rounds, além das posições do salt e da senha hasheada serem pré-definidas para que o algoritmo de extração desses dados consigam identificar o que é senha e o que é salt.