Смысл есть, когда вы пишите аннотацию для аннотаций и необходимо применять ее и к самой аннотации. Самый яркий пример - @Retention и @Target. Для самих @Retention и @Target аннотаций они тоже необходимы, т.к. применяется к аннотациям. Вот такая рекурсия. На практике же крайне специфичный кейс
Нельзя "поймать условие". Если задача отменяется с помощью cancel(), то можно внутри задачи проверять статус isCancelled() и уже реагировать как-то на это