What are the differences between these three kinds of case? How do we know that they are real? I kind of understand that inherent and lexical case are idiomatic and lead to variation in case marking, but I do not understand how they are different from each other. I read about them in this paper but did not fully understand.
The difference is not in the case itself, but in how it gets there. As I understand it, structural case comes from the functional structure of the clause, inherent case comes from the specific position or role of the argument (not from the structure around it), and lexical case comes from the specific verb's lexical entry. As a result, structural case is the most regular/predictable, followed by inherent and then lexical case. It looks like Woolford explains the details much better than I can.
As for whether they are real, that seems like the wrong question to ask; they are technical theoretical categories, and as such only make sense and have any status within a certain set of hypotheses. The purpose of theory is not to tell us what's real (that's a question for philosophers), but to construct a model that explains the data as well as possible.
The only possibly relevant notion of "real" is psychologically real, but then still theory can only point in the right direction, and quantitative psychological research would be needed to verify psychological reality of an object or category, but that kind of research is not necessarily possible for every theoretical concept in and of itself.