Главной задачей аннотаций является статическое расширение классов (именно классов, а не объектов), путём добавления метаданных в класс, без изменения его методов и свойств. Как правило, аннотации являются естественным способом взаимодействия с некоторыми из библиотек или фреймворков (например, Hibernate или Spring). То есть, добавляя в свои классы аннотации, которые определены в подобных библиотеках, Вы, тем самым, указываете библиотеке использовать именно те классы, методы или свойства, которые следуют за аннотацией. При этом, Ваш код не поддается никаким изменениям.