Do I use INSERT w/ ON DUPLICATE KEY or INSERT/UPDATE separately?
Your question mixes two things.

On the one hand, you have two parts to the UI, wherein the user decides, perhaps incorrectly, whether the action is just an insert or just a delete.

On the the other hand, you could have a single button, thereby simplifying the UI, and the button does IODKU under the covers.

But...  Maybe you want the user to be reprimanded when he asks to INSERT something that is already in the table?  (Etc)

The real goal should be to make the UI simple, concise, obvious, etc, to the user.  The amount of work to achieve the requested task is so insignificant that you should not be considered in the equation.  It may take the user 10 seconds to read, then press, the appropriate button, but but only 10 milliseconds to perform the action.  That's 1000:1 !

Anyway, back to your question...  IODKU has to check all UNIQUE (including PRIMARY) keys mentioned, then decide to INSERT or what row(s) to UPDATE.  (Yes, multiple mentioned unique keys can lead to multiple rows updated.  By why mention more than one unique key?)

An INSERT or a UPDATE is inherently faster than IODKU.  But it is probably sub-millisecond.  On the other hand, it will take seconds to report an error to the user and wait for him to deal with it -- if he presses INSERT when he should press UPDATE.

So, I go back to the important principle -- design the UI right.