Crossfire and SLI have to be with 2 of the exact same cards
Yes and no.
IIRC: SLI requires the same card for compatibility, Crossfire is compatible with any same-generation cards.
you cant crossfire a 4870(x2) with a 4850(x2).
Yes you can. You can't, for example, SLI a GTX 260 and GTX 275, or Crossfire a 3300 and 4850 (different generation cards).
HOWEVER: If you crossfire a card with a lower card (i.e. 4890 with a 4850) it drags down the performance to the clock speeds of the lower card, so a 4890 + 4850 in crossfire would be equal to having 2x 4850s in crossfire.