They're two similar ways of doing similar things. TOSCA is an OASIS standard. It's extremely general (which, depending on your point of view, can be another way of saying "complex"). Heat was developed to be a native part of OpenStack, and evolved from something very similar to AWS CloudFormation.
If I had to distill it down to one sentence I would probably say that TOSCA is targeted more at Enterprise workloads, whereas Heat is targeted more at Cloud workloads. That's a gross simplification though.
There is an OpenStack project called heat-translator that is designed to allow some TOSCA templates to be translated to HOT to run on Heat. I gather that good progress has been made, but don't expect every TOSCA template to work out of the box. FWIW the Heat and TOSCA teams have worked together to some extent to avoid gratuitous impedance mismatches.