Craft 3: how can I set an ordered list of all sites, and set a display name different from the site name?
If you would use a custom plugin you can create this function in your (I know it's deprecated but I don't know a better name) PluginVariable

public function createSiteQuery(): Query
{
    return (new Query())
        -&gt;select(['id', 'groupId', 'name', 'handle', 'language', 'primary', 'hasUrls', 'baseUrl', 'sortOrder'])
        -&gt;from(['{{%sites}}']);
}


You can then use 

{% set sites = craft.plugin-handle.createSiteQuery().orderby({'whatever': 'you want'}).all() %}


And attach as many parameters to the query as you like... If you would like to fetch only sites with a specific language you can do

{% set sites = craft.plugin-handle.createSiteQuery().where('language = "en"').all() %}


You have the full power of Yii2 Query class. You can group your sites as you like, change the order. You'll receive a single SiteRecord or multiple SiteRecords Class reference and you can display whatever information you like in the frontend. 

You are free to change the site names in your frontend with a static array map in your php code as well. Create a map with siteHandle =&gt; "new display name" and do something like

{{ craft.plugin-handle.displayCustomSiteName(site.handle) }}