GPIO 12, 13, 14, 25, 26, 27, 32, and 33 are already used for the relays, while GPIO 23 is for the status LED and I need another one for a DS18B20 sensor.
Therefore, the available GPIO pins for connecting 8 buttons are limited, and I would need to use pull-up resistors for all of them.
Using I2C would be a better solution, but I have no idea about the type of IC to use or the connection diagram. I’m not sure if pull-up resistors are needed or about the yaml file for the board.
That’s up to you (and it is all of them, S1 to S8). You did say “pull-up resistors” though so in that case the switch would connect the GPIO to ground when active (on). In this case you would set the input to inverted in software.
If you used pull-down resistors then the switch would have to connect the GPIO to 3.3v when active. In this case you do not invert the input in software.
GPIOs 34 to 39 are input only and do not have software pull-up or down resistors, hence the need for physical ones (10k Ohm is a good value). The other inputs do have software enableable pull-up/down resistors available so you don’t have to add physical ones.