The structure of "have one's heart set on something" idiom is strange for me. Isn't "heart" the object? So why it is not as "have set one's heart on something"?
"To have" has a lot of constructions that are different from to have (meaning to possess) + object.
One of these special constructions is to have + noun + past participle. This construction can have several meanings.
John had his nose broken in a brawl.
Later John had his nose operated on in hospital.
The gangster had a car parked near the bank and escaped.
In 1 the construction is a variant for passive. You could also say: His/John's nose was broken. Or: John got his nose broken.
In 2 the construction has the sense that John arranged that his nose was operated on.
3 Here "had" has the normal sense of to have. He had a car available. It was parked near the bank.
You have this construction also in a lot of fixed verbal expressions as to have one's heart set on something.
She had her heart set on a little house with a garden.
Meaning it was her desire. Her heart was in a special state, it was set on a house with a garden.
Hornby had this verb construction in pattern 9. A pity that there are no explanations.
Understand "have one's heart set on something" by analogy with these:
(1) John has his car in the garage.
(2) John has his car safely stored in the garage.
(3) John will make his heart invincible.
(4) John will have his car repaired on Thursday.
You can't re-order these sentences without altering the meaning. In (1), there's no additional verb, analogous to "set" in your example, to move around. In (2), you could say "John has safely stored his car in the garage", but that would be a different sense of "have": that would be "have" as an auxiliary verb combining with "stored" to make the present perfect tense. In "have one's heart set on something" and the examples above, "have" is not an auxiliary verb. It's the main verb, and it indicates causing or directing something to happen on your (the subject's) authority or decision or simply by your nature.
There is no single, official way to analyze these sentences into grammatical terminology. Here's how I understand them: this sense of "have" takes two complements: first an object, then a predicate. The predicate is something that the subject "has" (or "makes") true of the object. I'll enclose them in parentheses:
(1) John has (his car)object (in the garage)predicate.
(2) John has (his car)object (safely stored in the garage)predicate.
(3) John will make (his heart)object (invincible)predicate.
(4) John will have (his car)object (repaired on Thursday)predicate.
John has (his heart)object (set on a Ferrari)predicate.
The construction where a verb takes two complements, first an object and then a predicate, also occurs with the verb "let", which is used very commonly and for many purposes:
Let (me)object (out of John's car!)predicate
The predicate is often called an "object-complement".
In your example, "heart" is not the object of "set". The relevant sense of "set" also occurs in these sentences:
The television is set on channel 2.
The Enterprise is set on a collision course with Alpha Centauri.
and perhaps even:
John's decision might as well be set in stone.
You could re-word these sentences to make "set" the main verb. But in these sentences, "set on/in sth" is a predicate, attached to the subject (television/Enterprise/John) by the verb "be", following the same pattern as "The cat is black." A predicate is an abstract quality that in principle could be attached to anything. Sometimes people say that "set" in these sentences is passive, but that's an error. "Set" in these sentences describes a state, not an action.
Both are possible and there's no difference between them. It's the same structure as "look a word up" and "look up a word".