Haley had the right to be a bitch to Rachel. First, Rachel pretended to need help with calculus (when she didn't need help). Second, Rachel stole Haley's tutoring key when she was in the hospital getting checked out for pain (due to her pregnancy). Third, Rachel tired repeatedly to sleep with Nathan (before and after Haley was pregnant). After Haley slapped Rachel, Rachel was about to push Haley knowing she was pregnant, but Skills stepped in and protected Haley and told Rachel she needs to leave. Overall, I think Haley being bitchy in season 4 is justified.