Respostas:
"Construção" é um termo bastante geral e pode se referir a qualquer coisa necessária para ir de material de origem editável (código-fonte, scripts, arquivos de dados brutos, etc.) a um produto de software expedível. A construção pode (e geralmente envolve) várias etapas, como pré-processamento, compilação, vinculação, conversão de arquivos de dados, execução de testes automatizados, empacotamento etc.
"Compilar" é mais específico e quase sempre se refere a um processo que usa o código-fonte como entrada e gera algo executável, normalmente código de máquina para uma máquina física ou virtual ou código-fonte em um idioma diferente.
Esses termos são frequentemente usados de forma intercambiável, mas eu os diferenciaria da seguinte maneira:
Assim, compilar é realmente um subconjunto de construção.
A compilação é feita pelo compilador, a compilação pode ser um processo mais complexo.
Por exemplo. em C ++, para criar um projeto, você precisa de pré-processador (pré-processamento de arquivos de origem); compilador (compilação de arquivos de origem); vinculador (mesclando tudo em executável - código compilado, ícones, strings e outros recursos juntos)
Então, geralmente compilar é traduzir código escrito em um idioma para outro (por exemplo, código de máquina).