I received a QSL card with the signal reports transposed, at least according to my log of the contact. He says I sent a 44 and that he sent a 55, but I wrote down the opposite in my log. If I send a QSL card to him, should I just confirm his account of the exchange? Or should I just use the received/sent numbers as recorded in my log? Does it matter? Is it still a “good contact”? What’s the protocol here?
Regarding your question about whether it matters if the RS numbers in a QSL card you received match the numbers in your log, that's mainly up to you, unless you want to use the contact for something, like for DXCC credit or as part of a contest entry.
Most contest rules require that for you to get credit for the contact, you must correctly copy everything sent by the other station. In a contest, if his log said that he sent a 55 report and your log reported that you copied 44, then you typically wouldn't get credit for the contact and might also lose points for the mistake. In a phone contest almost everyone sends 100% 59 reports to simplify things, but newbies and stubborn holdouts still send real reports. If you were sending in a contest entry, which is optional, your contest log would typically be sent in electronically long before a paper QSL card confirming a contact in the contest is received by snail mail.
The DXCC program, on the other hand, doesn't care about the signal report in contacts submitted for DXCC credit. Specifically, in the DXCC rules, rule #4 says, "Confirmation data for two-way communications must include the call signs of both stations, the entity name as shown in the DXCC List, mode, date, time and band." Note that the signal report isn't mentioned.
Regarding whether you should send the RS numbers in your log or matching the QSL card you received, I think you should send the signal reports in your log, but that's just my opinion.