iwconfig or iw (which is the ‘new’ tool) is a low level tool to control the wireless interface via the related kernel API (nl80211), It’s good for rapid testing or configuration (e.g enabling monitor mode, getting link status…), but it’s not a daemon, so it will not connect you automatically to an AP, manage roaming, etc…
wpa_cli is the ‘usual’ WiFi daemon, it manages connection to APs (auto-connect, authentication, state-machine, roaming…). It can work in standalone mode (configured via wpa_supplicant.conf) or in combination with comprehensive network managers (e.g. networkd, nmcli, connman).
nmcli is a generic network manager, you can control any network connection, ethernet, WiFi, etc… For WiFi, it relies on a wireless backend daemon, wpa_cli or iwd.
I don’t know about reported issues, but nmcli+wpa_cli is usually reliable and simple to use.