Feature engineering means choosing which properties of the raw data matter for the prediction and encoding them explicitly as the model's inputs. The model can only use what a person has already decided to give it.
Why this depends on domain expertise
A model receives numbers, not objects. Turning a house into numbers means knowing that location, age, and floor area drive price, and knowing how to convert a street address into something numeric. That is knowledge about housing, not about algorithms. The same is true for a spam filter: someone must decide that word frequencies, embedded links, and sender history are the properties worth measuring. The expertise lives in the domain, and it is the human who supplies it.
Why it is central rather than optional
The model reasons only over the features it is handed. A relevant property that was never encoded is invisible to it, and no amount of training brings it back. An irrelevant property that was encoded can pull the model toward noise. So the quality of the features sets a ceiling on what the model can achieve, and that ceiling is set by a person before training begins.
A loan decision
Suppose the task is predicting whether a loan will be repaid. The raw record contains an applicant's income, employment history, existing debts, and a free-text job title. A person decides that the debt-to-income ratio and the length of current employment are the properties that matter, computes them, and hands those numbers to the model. The free-text job title is discarded or manually grouped into categories. Every one of those decisions is a human judgment about lending, made before the model sees any data.
Feature engineering is not a preprocessing step that happens to be done by hand. It is the step where the human's understanding of the problem enters the model, and it is the reason traditional machine learning is often described as requiring domain knowledge as much as algorithmic skill.