My perception is the HCL is a more-or-less manually updated data set.
It can/does contains errors, anomalies and inconsistencies.
So in general:
Where something is listed as supported or compatible it is described as such because someone has actually tried this combination and added this information to the HCL.
Where something is listed as unsupported or incompatible, it is often simply because it has not been proven to be supported or compatible, not that it is actually incompatible. Its like the fail safe option.
The problem is that you cannot easily tell what components listed as incompatible are defined as such as testing has shown this, from those that just haven't been tested at all.
So in simple terms : If the HCL says something is 'compatible' it will work, if it says 'incompatible', it 'might' work.