Facts are variables that Ansible collects automatically when controlling a remote system.
Facts provide information that is specific to remote system.
Facts are collected by running the setup module. The first thing when Ansible goes to talk to remote system what it's controling. It is mentioned by the message of setup module:
TASK [Gathering Facts] **********
Example of running setup module:ansible all -i server01, -m setup
All variables from this module starts with "ansible_". Example: