pcf8574 is not necessary. I am using it because I have it, and I am avoiding TX0/RX0(GPIO1/3).
You can choose 4 pins from GPIO0,2,1,3, 15, and use them as buttons. Just be careful not grounding or pulling high GPIO 0 and 2 during booting.
However, I would suggest ESP32. Although I haven't...