It is a little complicated because in some cases you may use one or another but I general I would say:
"Disculpa" is often used to call for someones attention whom you usually don't know, for example: "Disculpa, ¿podrías decirme que hora es?" is like saying: excuse me could you tell me what time is it?
ASKING FOR SOMEONE'S FORGIVENESS OR APOLOGIES: in order of formality: Perdón, Disculpa y lo siento
PERDÓN: You can use it as a verb: "Perdóname, no quise herir tus sentimientos" means: "I'm sorry I didn't mean to hurt your feelings " or as a noun: "Quisiera pedirte perdón por haber causado tanto daño" means: "I'd like to ask for your forgiveness for causing so much damage"
DISCULPA: as a noun. "pedir disculpas" is like "ask for an apology" which is less formal than asking for someone's forgiveness (asking for "Perdón")
DISCULPA/LO SIENTO: as a verb, you can use it in daily insignificant incidents such as hitting someone's shoulder when you're walking or maybe if somebody gives you your change wrong you ussually say: "Lo siento" or "Oh! disculpame"
Finally you can use "Lo siento" to express somebody your feelings about what has happened (ussually a bad thing) to that person for example if you know that a girl/boyfriend of a friend of you had left him/her you say: "lo siento"
Hope I was clear enough =)
Regards!