Transfer learning starts from a model already trained on a large dataset and adapts it to your task, which needs far less data than training from scratch.
Transfer learning is the general idea of starting from a pretrained model. Fine-tuning is one way to do it, by continuing to train the existing weights.
Transfer learning starts from a model already trained on a large general dataset and adapts it to your specific task. You inherit everything it learned and only teach it the difference.
It works because early layers learn general things. Edges, textures, grammar. Those transfer across tasks, so you only need to retrain the parts that are specific to yours.
Think of it like this. Think of hiring an experienced engineer rather than training someone from nothing. They already know how to program. What they need from you is your codebase and your conventions.