ARel allows building and interacting with SQL queries in an object-oriented way and can be used independently or with ActiveRecord. It provides methods to access model attributes, add predicates, perform aggregations, use operators, filter and order results, handle limits and offsets, perform joins, unions, and arbitrary SQL functions. While ARel generates portable SQL, ActiveRecord does not always canonically reference attributes, so ARel is important for complex and portable queries.