"Bless your heart," in my experience, which is mostly with aunts from Texas, is something you use more to express pity and sympathy. When it's used directly to someone it's a direct show of either sympathy for a bad situation or acknowledgement of good intentions, such as,
"Aww, you were home sick all week! Bless your heart. You take it easy now, don't push yourself to come back too soon."
"Oh, bless your heart, this cake turned out just fine, I don't think anyone even notice that you didn't have time to add the fondant flowers."
When it's used to talk about someone who isn't there, it is usually a softening of a criticism by acknowledging that the person really was trying their hardest or had the right intentions. That can get a little strained when it turns into an attempt to make oneself feel better for gossiping or criticizing, but the intent of the phrase is still the same.
Two examples, one mild and one straining to make oneself not appear too harsh:
"Oh, bless her heart, she stayed up all night finishing that cake but it just ended up so dry and no one really wanted to eat it."
"Karen, bless her heart, just tries to wear clothes that she can't really pull off at her size."