Декомпиляция - это один из инструментов реверс-инжиниринга.
По сути это процесс, обратный компиляции.
Декомпиляция позволяет перевести код программы из нечитаемого вида (машинного или промежуточного кода) в более-менее читабельный код на языке высокого уровня.
А реверс-инжиниринг - это процесс изучения того как именно работает та или иная программа. Возможно, с последующим повторением интересующей функциональности или изменением поведения программы.