When exploring the features of Oracle Active Dataguard, I found that one of them is block change tracking to allow the standby db to take the load of backups instead of the primary database doing them. Is there a need for taking backups of the primary DB in the first place, when the standby database can be used for recovery directly?
Depends on your requirements.
A standby database is typically a copy of the primary database. Meaning you can not restore and recover a past state of the database. If something goes wrong in the primary database, that change depending on configuration may be immediately replicated in the standby database. This can be handled by using flashback or configuring a standby to lag behind on purpose.
With backup, a database can be recovered to any point of time in the past within the recovery window or redundancy retention policy, which could be days, weeks or even more. It may be required to create a copy of a past state of the production database in a test environment. Some companies may have regulations so they need to preserve past states of the database for a specific amount of time, or they need to be able to restore and recover their database as of in any past point in time in a specific period.
Yes, I have seen customers with Data Guard who did not make database backups, but it is uncommon.