This sounds like job for attributes. You can use an attribute to decorate your properties with the exact header information you want. For example:
<Description("Endereço")> _
Public Property String Endereco ....
And then use reflection to pull that value out in code. You can also use the attribute value as a key into a localization table, to make future translation to other languages easier as well, or use other attributes to do things like tell your view not so show a particular field in certain circumstances.
To answer your reflection question, I'm assuming you're already at least a little comfortable with it, as that's how you have to iterate over an object's properties (unless what you really have is a dictionary, in which case you should have said so). So as you're iterating over the properties the objects you're working with are of type PropertyInfo, and you can call the GetCustomAttributes() method for that type to find any attributes associated with the property.