Запятая представляет логическое ИЛИ в синтаксисе селектора. Таким образом, каждый элемент будет сопоставляться с каждой частью вашего селектора за раз, и если он удовлетворяет хотя бы одной из этих частей, применяется правило.
Итак, в вашем случае, вот что происходит:
input[type='button']
будет соответствовать вашему form input:not([type='submit'])
селектору
input[type='submit']
будет соответствовать вашему form input:not([type='button'])
селектору
input[type='text']
будет (очевидно) соответствовать обоим селекторам
Вот почему ваше правило применяется к всем входным данным вашей формы.
Если вы хотите объединить оба отрицания, объедините их в цепочку, вместо использования списка через запятую:
form input:not([type='button']):not([type='submit']) { width: 200px }