define_property on target has no effect?

I assume you mean define_property(), not define(). There’s no difference in what get_property() and get_target_property() see as target properties. Both commands see the property as not defined. The difference is in what they give back when the property isn’t defined, and that difference has nothing to do with the define_property() command.