Назначение
:not(selector) исключает элементы, подходящие под аргумент. В Selectors Level 4 аргумент может быть сложным списком.
.list li:not(:last-child) { border-bottom: 1px solid #ddd; }
button:not(:disabled):hover { filter: brightness(1.05); }
:not(.no-print, .modal) { }
Специфичность :not() добавляет специфичность аргумента. :not(#id) тяжелее, чем кажется. Для «всех кроме» иногда чище отдельный модификатор класса.
Итог
:not — фильтр исключения; следите за специфичностью аргумента и читаемостью.