Blocks that I reuse I've set up as sheets in a project of their own with files named memorably. It has an ATMega328p with XTAL/decoupling caps as the main sheet. That way if I want to rapidly spin up an ATMega based circuit I can just reuse that whole schematic including additional sheets as my strting point, deleting what I don't need at the time.
For example the programming headers for ATMega I have in a sheet called prog.sch. It includes the ISP and FTDI headers with nets named. In the new project I (hit S to) create an empty sheet called prog.sch, maybe another called power.sch; save and exit then outside KiCad copy these standard files of the same name over the top. If this new example is ATTiny based I would delete the unwanted FTDI header from prog.sch (and anything else I don't want) and the ISP header and power supply is good to go.
UI.sch for example includes a header for an I2C display & pull-ups, power and activity LEDs, reset button. Power.sch includes linear 3V3 & 5V regulators with a 2.1mm centre positive DC jack and caps and the PWR_FLAGs. Once they're copied in, opening the project in KiCad has all these sheets now populated with known working blocks. And I can delete and add from there. In another project I have the power sheet for centre negative DC supplies for guitar pedals etc that has a 9V battery, 5V regulator and battery warning LED. So long as the sheets are named so I can drop them in the system works, though I'm sure once my library of projects expands this could become difficult to manage.