la propiedad es una forma de manejar lo que en POO se conoce como encapsulamiento , donde tu defines quien, y como se acceden a los miembros de una clase (ojo una propiedad es un miembro, pero no siempre a la inversa), muy aparte de los modificadores de acceso. dando un nivel de acceso al miembro de solo lectura o lectura/escritura pero siempre manteniendo a los miembros no accesibles al consumidor lo mas encapsulado posible.
http://msdn.microsoft.com/en-us/libr...sw(VS.80).aspx
los atributos son metadatos asociados a tipos, metodos, propiedades , namespaces , etc que lo que hacen es darte la posibilidad como usuario de conocer informacion relevante sobre el ambito en el que actua el elemento que vas a usar en tiempo de ejecucion de tu aplicacion o de otras usando algo que se conoce como reflection.
esos metadatos te permiten identificar que tipo de clases son, si son por ejemplo en muchos caso, serializables, si son webmethods como en los webservices, si una propiedad de tu clase por ejemplo puede ser vista en tiempo de diseño y muchas cosas mas.
http://msdn.microsoft.com/en-us/library/z0w1kczw.aspx