If you are asking questions related to client operating system versions, you might not need SQL Express at all. There are many things to consider in choosing the data backed.
If you intend yo use the DBMS in a real client-server scenario (many clients running in parallel on PCs that are not the same that hosts the database server engine), than I am wrong with my assumption.
But let's suppose that you need a database backend for a stand-alone application. Than SQL Server Express might be a burden. Why? Because it is a full-blown engine, with quite big footprint. Of course it has some remarcable features you might really need. Still, one thing you can not overcome is the installation as this is your problem here too.
The alternatives are called embedded database engines. These are more or less libraries you link your application to, and you ship with your application. They do nor run as standalone executable or service. They will be part of your application. There are many out there from SQLite, Firebird Embedded to SQL Server Compact (not Express!), but also many others that adhere to
NoSQL[
^] rather than to the traditional relational model. Google will suggest you many, I won't.
What you need to consider when using embedded data backend of any kind is that they usually do not provide any programmatic interface such as stored procedures. Why should they as it would present less performance than implementing the same logic directly in your application. Remember that they run on the same iron and in general even in the same process.
So a good embedded object store with high performance linq interface will most likely cause less headache for a stand-alone application than any rdbms.
Still, you have to consider this right from the start, in the planning phase...