The present perfect tense (минало неопределено време), sometimes just called the perfect tense, is a Bulgarian tense very close to the English present perfect (its name translates literally as past indefinite tense but it is usually called the present perfect, in English).
The English name is maybe a bit confusing, as this is actually another past tense, like the past aorist and the past imperfect, that you already know.
Let's contrast it with the aorist (preterite):
"Аз купих нова кола" - I bought a new car (aorist)
"Аз съм купил(а) нова кола" - I have bought a new car (perfect tense)
The perfect tense expresses an action that happened at an unspecified time in the past, that is presented as a completed action, without much context about the circumstances in which it happened, and with the emphasis on the result of that action in the present.
Like in English, adverbs that indicate a specific time in the past, like утре (yesterday), преди (ago) or снощи (last night) go with the aorist (preterite), whereas adverbs that are more general, not associated with a specific moment, like никога (never), винаги (always), вече (already), от (for, since) go with the present perfect.
The present perfect is formed with the auxiliary verb съм, conjugated in the present tense, and the past active aorist participle of the main verb.
The past active aorist participle is not to be confused with the aorist tense. It is one of the 5 participles in Bulgarian: there are 3 active ones - present, aorist and imperfect, and 2 passive ones - present and past.
The aorist participle is formed from the same stem as the aorist tense, by adding a termination that has to agree with the gender and number of the subject. It can be formed from both perfective and imperfective verbs.
Let's take for example видя, the perfective verb for "to see". The past aorist is видях, "I saw". To form the aorist participle ("seen"), you take the aorist stem, which is what is left after you remove the personal ending "х" from "видях" (you get "видя"), and add the following personal termination:
This is the general rule. Unfortunately, as always, there are exceptions, particularly for verbs that end in -ох for the 1st person past aorist.
For those that end in -тох or -дох and have the stress on the last syllable in the present tense, you get the aorist participle stem by removing -тох or -дох from the 1st person past aorist conjugation: чета ➜ четох ➜ чел, чела, чело, чели.
For those that end in -кох, -зох, -сох, you get the aorist participle stem by removing -ох from the 1st person past aorist conjugation, and insert the letter "ъ" between the resulting stem and the aorist participle termination: вляза ➜ влязох ➜ влязъл, влязла, влязло, влезли.
Finally, the following common verbs are irregular:
съм ➜ бил, била, било, били
отида ➜ отишъл, отишла, отишло, отишли
дойда ➜ дошъл, дошла, дошло, дошли
"Никога не съм бил(а) в Африка" - I have never been to Africa
"Вече съм гледал(а) този филм" - I have already seen this movie
"Още не съм я виждал(а)" - I haven't seen her yet
Since this tense is formed with the present conjugation of съм, that cannot appear as the first word of a sentence, the word order may sometimes have to be inverted:
"Аз съм купил(а) нова кола" or "Купил(а) съм нова кола"
Dative or accusative personal pronouns (clitics) normally go between the auxiliary (съм) and the verb. However, when the subject is the 3rd person singular, the order is reversed and the pronoun is placed before the auxiliary:
"Те винаги са го обичали" - They have always loved him
"Тя винаги го е обичала" - She has always loved him