Aria-properties and aria-states are both attributes. The main difference between them are:
aria-properties are unlikely to change
aria-states are likely to change
In practice, we don’t really differentiate between properties or states. We simply see them as attributes.
Examples of ARIA attributes you’ve seen are:
aria-label
aria-labelledby
aria-describedby
aria-hidden
You can find the list of properties and states in the specs. There are 48 properties and states grouped into 5 categories.
Global attributes
Widget attributes
Live region attributes
Drag and drop attributes
Relationship attributes
We won’t go through the list of attributes one by one because you’ll get overwhelmed. We will go through the attributes you need to know right before you use them to build components.
ARIA support across screen readers
ARIA attributes mentioned in the W3C Spec are not fully supported across screen readers. You should check for support before implementing them.
The best resources I could find to check for support are:
Aria Support for JAWS: An ARIA support list for JAWS, maintained by accessibility experts.
A11y Support: A community-driven ARIA Supports list for all screen readers.