That means you don’t have a field called population on one of the sides of the union. A UNION only truly works properly if the rows returned by both sides have the same number of fields, named the same and of the same type. Granted, some of the DBMS try to make them work without it, but YMMV and the results may not be true and accurate.
The reason it works without the union is that the field exists in one of the tables that are being joined, so even though you’re not selecting it, the DBMS has access to the field to be able to order by it. In other words, either table or some_table have a field called population.
When you do a UNION however, ONLY those fields that are selected are available to the DBMS. Essentially, the DBMS creates a temp table which contain ONLY the fields that are selected and UNIONed, then returns rows from that temp table.