Проблема в том, что .h файлы просто вставляются в .c файлы, когда вы делаете include.
Т.е. в файлe, который у вас первым приведен, который делает define 2 и include - MAX_FIELDS будет 2. А в файле library.c, который тоже делает include library.h - MAX_FIELDS уже будет 0.
Если MAX_FIELDS влияет на декларацию чего-то (например, размер массива в какой-то структуре), то вы получите ошибку на этапе линковки (потому что в разных объектах компиляции будут объявлены разные структуры). Иначе - присваивание MAX_FIELDS 2 в услолвном main.c ни на что не влияет.
Вам надо задавать MAX_FIELDS в опциях компиляции всего проекта. Обычно это ключ -D, или в Makefile оно его еще можно задать.
Еще альтернатива - вместо константы MAX_FIELDS передавайте значение в ваши функции, если можете.