<p>Is there any difference between a binary semaphore and mutex or are they essentially the same?</p>

A
mutex
can be released only by
the thread that had acquired it
.
A
binary semaphore
can be signaled
by any thread
(or process).
so semaphores are more suitable for some synchronization problems like producer-consumer.
On Windows, binary semaphores are more like event objects than mutexes.