lv_obj_align is not an anchor. It is merely a convenient way of positioning an object. When you use an animation it will change the coordinates itself, and not use lv_obj_align.
lv_obj_align can be called as many times as you want (not just at object creation), but it’s not an anchor (you have to call it again if you resize the parent).
Actually, there is a way to “anchor” objects. It’s called “auto realign”.
If you enable lv_obj_set_auto_realign(obj, true) and then call lv_obj_align(...) the library will save parameters from lv_obj_align() and reapply them when the size has changed.
You can enable this feature with LV_USE_OBJ_REALIGN 1 in lv_conf.h