Quoting from @don_crissti's comment to directly answer OP's query:
You don't need the ntpd.service if you're using the timesyncd one. I use the latter on several desktops that don't even have the ntp package installed. Read the arch wiki entry about it here: wiki.archlinux.org/title/Systemd-timesyncd
Aside from that quote, with modern versions of timedatectl (and corresponding systemd-timedated), there is a list of time synchronization services in /usr/lib/systemd/ntp-units.d/*.list files. As usual, you can use /usr/local/lib/systemd/ntp-units.d/*.list files to make timedatectl aware of locally-administered (= not installed from packages) time synchronization services, or /etc/systemd/ntp-units.d/*.list for administrative overrides to existing time sync service lists.
Setting the environment variable SYSTEMD_TIMEDATED_NTP_SERVICES for the systemd-timedated service is another way you can override the list of time sync services.
When you do a timedatectl set-ntp true, systemd-timedated will look at its list of time synchronization service names, and will start the first listed service that is actually available.
To make your timedatectl aware of ntpd.service, you could do something like this:
echo "ntpd.service" | sudo tee /etc/systemd/ntp-units.d/10-ntpd.list
systemd-timesyncd was originally developed as a minimalistic service to just periodically fetch time from a NTP server, effectively a SNTP client. It seems to be developing into a more complete NTP client, but I'm unsure as to how it compares to e.g. classic ntpd at this time.
A more full-featured NTP synchronization service like chronyd or ntpd will also constantly measure packet round-trip times between the local system and the NTP time sources, compensate for it, and also measure and compensate for systematic errors of the local system clock.
systemd-timesyncd was originally meant for embedded systems and other use cases where it's nice to have "human-scale" correct time, but not necessary to achieve very high accuracy.
With a well-configured chronyd or ntpd and a good set of nearby NTP servers, you can get your systems synchronized to within a millisecond or better.
If you need your systems synchronized down to the microsecond or even better, you can get with NTP with careful tweaking, but it might be better to use PTP in that case.
Note that the development of the classic ntpd has stalled in the recent year or two, and it has some known security issues. Newer implementations like chronyd and NTPsec might be more secure.