Why the instance name of SQL Server Express is changing?
This app isn't using the regular SQL Server Express Edition. Express Edition runs as a service such that you'd see it in the Services control panel (on Windows), and there would be a stable instance name, as you're expecting.

This service you're connecting to uses the (confusingly named) SQL Server Express LocalDB. This is often referred to as just "LocalDB" to reduce the confusion of the name overlap. LocalDB runs in process--that is, it isn't a service, but is started up by the app that uses is. 

LocalDB supports a number of configurations, depending on how the application is intended to be accessed. Check out the section in the docs titled "Automatic and Named Instances" as well as the section titled "Shared Instances of LocalDB".