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