Tables and queries are by definition unordered sets. If you want to enforce order in a query or table and you should ALWAYS want to enforce order, add an Order By clause to the RecordSource query.
Autonumbers have no meaning and you should not assign any meaning to them. Their sole purpose is to provide a unique identifier for a record.
Reports are a special case since the report has an internal order by so you can't control sort order of a report by using the Order By clause of the RecordSource, you MUST use the order by property exposed in the report design view.
And finally, when you compact a database, Access rewrites all tables into PK order. Records get out of order during the update process. If a record becomes longer when you update it, Access can't put it back where it was so it replaces the original data with a link and then places the updated record at the end of the table. Sometimes you will see this behavior but you will need enough data to fill the "block" used in the I/O process. It is never a single record. It is called different things, sometimes physical record versus logical record, sometimes block, sometimes sector, etc. Anyway, it represents the level at which data is actually read from or written to the physical device.