Is there any reason to do .fit() and .transform() instead of just .fit_transform()?
I assume you are talking about sklearn's scalers or sklearn's feature transformation algorithms in general.
Let's say your dataset is splitted in 5 sub-sets and you want to scale each of them between -1 and 1:

You fit your scaler on each sub-set using fit, this basically searches for the maximum and minimum over all of your sets
Then, you can scale your sub-sets using transform

If you had used fit_transform, on the first sub-set, then used it on the second one, it would have been scaled differently, and you don't want that.
Moreover, instead of sub-sets, you can think of fitting once on your training set and keeping the transformation in memory to scale future samples you want to pass to your model.
I just started learning ML and wondered why one would do .fit() and .transform() separately, when .fit_transform() exists. Also, I am generally confused on what exactly fitting/.fit() does.