Both are used for the English word birthday. Which one should I use for the specific date of birth, and which one should I use for the event happening every year/month/..?
datreveno is more general. You sometimes also hear jubileo so it's not necessarily a birthday. Some people argue, that naskiĝtago is wrong because it's actually not the birthday in the sense that someone is born this very day, but it's only the same day of the year.
Personally I use naskiĝtago in the general sense of birthday and datreveno if it's not about a birthday but some other kind of aniversary, for example two years of marriage or something like that.