This is confusing indeed. Let me repeat what you are showing here:
In[25]:= ccr2 Out[25]= a < b < c In[26]:= parse2[ccr2] Out[26]= parse2[a < b < c] In[27]:= parse2[a < b < c] During evaluation of In[27]:= Matched!
Out[26] and In[27] looks exactly the same, yet one evaluates the other doesn't. Are they really the same? The first thing to check in such cases is their FullForm.
In[30]:= FullForm[ccr2] Out[30]//FullForm= Inequality[a,Less,b,Less,c] In[31]:= FullForm[a<b<c] Out[31]//FullForm= Less[a,b,c]
As you can see, they are not the same, even though they are formatted in the same way in StandardForm. This explains why there is a match in one case but there isn't a match in another.
I'll update the post if I can come up with a workaround that seems better than the obvious (i.e. manual transformation of Inequality expressions).
Possible workarounds:
The undocumented function Reduce`InequalityExpand seems to convert inequalities such as a < b < c to the form a < b && b < c. This may be useful for your purposes.
The documented function LogicalExpand also carries out this transformation. But it also does other things which may or may not be desirable depending on your specific problem.