Both are legal terms and have a slightly different meaning, that may or may not be present in the translations suggested by Google.
"Haften" can be used for all kinds of usually financial commitments. It applies mainly to paying back debts for loans, but also paying to repair a damage someone did to another person's property or health.
"Bürgen", nouns "Bürge" and "Bürgschaft", is more specific, "haften" is a more general word that can also be applied. "Bürgschaft" means person A wants a credit, but won't get it. Person B ("Bürge") promises to repay in case person A can't. Person A has to repay the credit, but as soon as A misses a payment, the bank can get person B to pay for everything. Person B may try to get the money back from person A, but is unlikely to succeed, as person A doesn't have the money.
While "Haftung" can arise because of carelessly destroying something, "Bürgschaft" requires a contract.
Needless to say, you should think hard before signing a contract for "Bürgschaft" and consider the money lost until person A has paid back the credit.