I said to somebody that I have braces on. I meant to say that I wear braces. Would what I said sound odd to a native English speaker? If yes, then how else could I have said it?
Generally, having something on applies to something that you can easily put on and take off. This applies not just to clothing, but also to things like makeup or sunscreen.
For something more permanent, like a tattoo, you would just say that you have a tattoo without adding the word "on", because you can't easily put on or take off a tattoo. Braces are like a tattoo - you can't put them on or take them on yourself, you need an extended professional process to do it, so you would just say, "I have braces."
Finally, for permanent things, you can use having something on a body part. So you can have a tattoo on your ankle or have a birthmark on your face or have braces on your teeth. This construction also works for temporary things - you can have a hat on your head or just have a hat on.