inventory_hostname is the one which configured in the ansible inventory file (eg: /etc/ansible/hosts). It can be an IP address or a name that can be resolved by the DNS.
ansible_hostname is the one which discovered by ansible. Ansible ssh's into the host and gathers some facts. As part of the fact, it also discovers its hostname which is stored in ansible_hostname.
If you want to access host information, you need to use the inventory_hostname. If you want to use/print the name of the host as configured on the host, you should use ansible_hostname since most likely the IP will be used in the inventory file.
Please note that use ansible_hostname, you need to gather facts.
Otherwise, you will get a message that ansible_hostname is not defined.
"ansible_hostname": "VARIABLE IS NOT DEFINED!"