This is because Emacs diary only looks `icalendar-export-sexp-enumeration-days' days ahead from now when exporting non-standard diary sexps. By default, it is 2 weeks. So, you would see the anniversary in icalendar if it were 2 weeks from now.

You can increase `icalendar-export-sexp-enumeration-days' to get the anniversary occurrences exported up to that number of days ahead.

The variable icalendar-export-sexp-enumeration-days is indeed set to 14. However, even entries of the form

* Test 1
%%(org-anniversary 2023 07 22) Test1
* Test 2
%%(org-anniversary 2023 07 24) Test2

do not get exported today (2023 07 23).

Also, `org-anniversary' does not support %d. AFAIK, it is only working for built-in sexp types, which are handled specially.

%d works perfectly in the agenda view.

Marcus