If a modifier header turns red, this basically means it is doing nothing at the moment because some input is either missing or not as expected. There is an action required by the user to make it work. Here are three examples of modifiers that show this behavior:

In each case I have circled the parameter that is causing the behavior in red. Most of the time, Blender requires a reference to another object to run the modifier.
- In case of a boolean, there must be another object you want to cut or join your main object with
- In case of the lattice modifier, a lattice object is required that tells Blender what the rules of the deformation are
- In case of the SubSurf the modifier is entirely skipped in the Viewport because there are simply zero subdivisions requested by the user.
These are not the only modifiers with such behavior, they are just listed here as examples. So red header means currently not doing anything at all, and as a result, clicking Apply will throw an error, because nothing can be done to the base object as a result.