Reading NDEF records is segmented, since a record can be up to 512 bytes and a secure channel response carries at most 245. P2 is the offset in 4-byte words, so valid values are multiples of 4 in the underlying byte offset. The card returns as much as fits, at most a multiple of 4 bytes; the client keeps requesting the next segment until the returned length is shorter than requested. Passing an offset at or past the end of the record returns 0x6A86.
Public and Cash data are small enough to always fit in one response and ignore P2.
Since 4.0 this command requires a secure channel.