Let demistify some things about RFID Reader interfaces.
Majorly, you will find WIEGAND and DATACLOCK interfaces that are known to be simple to use, however they only accept reading from the reader, and thus, do not require request/response plumb to be managed.
D0 and D1 Pins on a reader are respectively LOWLEVEL (0) and HIGHLEVEL (1). This means that when D0 comes to LOW, you have to interpret a 0, and when D1 comes to LOW, it is 1.
D0 and D1 are sequantial sets, and do not need any CLOCK to be synchronize. What you only need to read a WIEGAND sequence is 2 InterruptInput (one for D0 , one for D1) and sharing a common binary buffer.
With DATA CLOCK, there is a clock sync that tell you when to read the DATA value. In tthis case you need 1 InterruptInput (CLOCK) and 1 simple input (DATA) => When the CLOCK goes to LOW, you read the value on DATA, and so on.
Regarding to the size of the Buffer, this is given by the reader. Commonly it is WIEGAND 26 which means 26 bit, including 1 bit start, 24 bit for the UID, and 1 bit stop…But, it can be different to this standard if specified on the reader…