There is no relation between the two words.
From the Old French caméléon, from the Latin chamaeleon, from the Greek khamaileon, from khamai "on the ground", like chthon "earth", from the Proto-Indo-European root *dhghem- plus leon "lion" from the resemblance of the head crest to the mane of a lion.
Gxemel*, on the other hand, comes from the Latin geminatus meaning "twinned", the past participle of geminare meaning "to double or repeat". Possibly from the Proto-Indo-European root *yem- meaning "to pair". This is where the zodiac constellation Gemini, The Twins, comes from.
In Esperanto, the -o suffix makes it a noun and the -n suffix makes it the accusative case, in this instance the direct object of a verb. If we wanted to say "Twins are fun", that would be "Gxemeloj estas amuzaj."
Yes I will also interpret the english sentence "X has/have a twin" as "X has/have a twin sibling".
But when you in translate "X havas ĝemelon" into my native danish: "X har en tvilling" it would mean "X has a child who is a twin".
And that is where the ambiguity hits.
That "X havas ĝemelon" will be interpreted differently, depending on which language you translate it into.
On the other hand:
"X estas ĝemelo" and "X estas ĝemeloj" is about what you are, and "X havas ĝemelojn" is about having more than one twin, and as it you can't have more than one twin sibling, it is clear that you are taking about offspring, so they would , knock on wood, be interpreted the same way no matter what language you are speaking.