This has to do with the imperative and declarative mood. I found this: https://stackoverflow.com/questions/47369351/kubectl-apply-vs-kubectl-create
I think a comment to a different answer better describes it:
> They do different things.
kubectl create will throw an error if the resource already exists.
kubectl apply won’t. The difference is that
kubectl create specifically says “create this thing” whereas
kubectl apply says “do whatever is necessary (create, update, etc) to make it look like this”.
Thank you @Greg