Synchronize will do what you wrote above. Add, update, rename or delete a data file in one directory -- and when you run SyncToy, that will be reflected in the other directory. And the reverse will be true as well. SyncToy will make sure that both directories will remain identical -- whichever file is newer prevails and the older replaced.
For me, I use C drive as my working drive -- and my external drive only for backup purpose. My apps don't save anything directly to my external drive. I could use synchronize, but I choose echo. All the actions "flow" from my working drive to my external drive -- BUT NOT the other way around. Why echo and not synchronize? Primarily because of my workflow as described. Given the workflow, there shouldn't be any changes that originate from my external drive -- so no need to sync both directions -- and possibly safer option as well. If for some reason a file gets corrupted in the external drive, that bad file won't sync and replace my good file on my working directory.
Contribute is good if your want your external drive to be a "repository" of everything -- meaning if you delete a file in your working directory, you still want it to live on in your external drive. But this means that file pruning or deletions in the target or external drive will have to be done by you manually.
Hope this helps.