From my understanding of the documentation: kubectl apply = kubectl create + kubectl replace. So, if I'm creating resources for the first time, I should use kubectl create. If I want to update something that already exists, I use kubectl replace. If I want to do both then I do kubectl apply.
I just want to know why are there three different commands doing essentially the same thing? Or is there some key difference that I'm missing?