Использование Win32 Mutexes ручек, когда вам необходимо заблокировать или синхронизировать потоки в разных процессов.
Используйте Win32 CRITICAL_SECTIONs, когда вам необходимо зафиксировать между потоками в пределах процесс. Это дешевле, чем время, и не связано с системным вызовом ядра, если не существует блокировки. Объекты Critical Section в Win32 все равно не могут охватывать границы процесса.
«Вредное» - это неправильное слово для использования. Больше похоже на то, что «мьютексы Win32 немного дороже, чем Win32 Critical Sections с точки зрения производительности». Запустившееся приложение, которое использует мьютексы вместо критических разделов, вряд ли повредит производительности системы. Он будет работать только медленнее. Но в зависимости от того, как часто ваша блокировка будет получена и выпущена, разница может даже не измериться.
Я забыл перформационные показатели, которые я сделал давно. Суть в том, что API-интерфейсы EnterCriticalSection и LeaveCriticalSection имеют порядок 10-100x быстрее, чем эквивалентное использование WaitForSingleObject и ReleaseMutex. (порядка 1 микросекунды против 1 миллисекунды).