code is read more often that it is written. booleans are actually just integers under the hood but explicitly using booleans communicates your intent. you're saying to the next guy that "if this is something other than 1 or 0 something has gone wrong".
when it comes to C specifically, the bool type was a pretty late addition because as you say, an integer can do the job. but it's very good for organisation, and it also allows the compiler to make some assumptions about how the variable can be accessed. if you know something can only be in two states, you can shove a whole bunch of them into the same byte of memory.