Olá Tiago, tudo bem?
A diferença é que no primeiro Select:
SELECT DISTINCT [bairro], [cidade] = 'rio de janeiro'
FROM [tabela de clientes]
Está buscando todos os bairros distintos da tabela de clientes, juntamente com a cidade, se você analisar o resultado desta query, será retornado todos os bairros e no campo cidade está recebendo o valor rio de Janeiro diretamente no Select, o valor não está vindo do banco:
Agora se for feito um Select na Tabela de clientes, você irá perceber que alguns bairros fazem parte de São Paulo e não do Rio de Janeiro, e até mesmo a escrita está diferente:
Já o segundo Select:
SELECT DISTINCT BAIRRO FROM [TABELA DE CLIENTES]
WHERE CIDADE = 'Rio de Janeiro';
Está buscando todos os bairros distintos da tabela de clientes e que sejam apenas da cidade do Rio de Janeiro, se você analisar, nenhum bairro da cidade de São Paulo foi retornado, como no primeiro Select :
Espero ter esclarecido a sua dúvida Tiago e bons estudos!