Olá Edson, tudo bem? Então é mais fácil entender essas duas palavras quando estamos trabalhando com um projeto Java ou outra linguagem, tipo no java poderiamos dizer que o build é quando geramos um arquivo com a extensão .war (um arquivo compactado com todas as dependências do projeto), digamos que geramos o arquivo com o nome sistema.war que futuramente será executado em um servidor. Já o deploy poderíamos dizer que é o momento em que colocamos esse arquivo sistema.war no servidor Tomcat que vai disponibilizar essa aplicação para os clientes.
Porém isso também se aplica a outras linguagens, ou ferramentas, um bom exemplo disso é um projeto ReactJS, o servidor geralmente não compreende as coisas que são feitas no mundo ReactJS e é necessário transpilar o código para o javascript puro que o servidor entenda, e nesse caso é feito build gerando assim um pasta com todos os arquivos já em javascript puro e pronto para serem enviados para o servidor executar, no caso, prontos para o deploy no servidor.
Um processo semelhante também acontece com aplicações móveis, onde geralmente é feito uma compactação, uma junção dos arquivos para ficarem pronto para serem enviados para as lojas e depois dispositivos, por exemplo, um projeto de um aplicativo android sempre precisamos gerar o APK para ser enviado para a Play Store ou para o dispositivo em si.
Já em um projeto PHP, o build e o deploy geralmente fica difícil de diferenciar, mas o build podemos considerar como momento em que fazemos o download de todas as dependências do projeto, já que o PHP é um linguagem interpretada, e o deploy é quando você coloca todos os arquivos do projeto no servidor para serem executados e os clientes consigam acessar.
Espero ter esclarecido sua dúvida!