Это аналоги аннотаций (которые есть уже в PHP через библиотеки типа Doctrine Annotations)
и которые в свою очередь аналоги Java Annotations
Тк в PHP это реализовывалось отдельным парсингом определенно оформленных комментариев — стало по сути отдельным языком и получило популярность в Symfony и др инструментах — решили внедрить как в Java нативно на уровне языка.
Аннотации/атрибуты нужны для того, чтобы можно было писать логику в аспектно-ориентированном стиле,
подробнее.
То есть некоторая логика, которая выполняется несколько отдельно (декорирует и/или меняет поведение или ещё как-то иначе улучшает программу).
Это очень выразительный, удобный способ для использования, хотя иногда и сложный для того, чтобы разобраться в кишках работы того или иного инструмента. Более подробно:
Wiki: Аннотация (Java)