Without wanting to sound too stupid, SQL Express is free and the free resources make it a good choice for a beginner like me. I know it has limitations (read other posts) but the figures mean little to me I'm afraid.
I imagine I'll be querying my DB a lot so my users can generate reports, but again I wouldn't think (hope) they are to complicated or demanding - simple select and filter on user name queries. Obviously I'll run these past StackOverflow to see if they can be written more effectively (and to see what an effective query looks like).
Thanks for all the comments. I've got a better understanding of what things I need to consider to make sure that the free version is enough - good coding practices, efficient queries and closing connections down after use.
I believe my users will it hit moderately, and they shouldn't generate much data as I'm going to limit what we capture to the basics. Later on should I develop my solution I'll mention the fact of limitations to my bosses and it'll be their decision whether to pay or keep nit limited.
Apologies for the limited information in the question, and the 'answering my own question' option but rather than reply to you all I thought this was most effective.
From your question, it sounds as though SQL Server Express would be fine for your needs. The real, practical limitations of SQL Server Express are in it's maximum database size (4gb per database), it's maximum size of usable memory (1GB IIRC) and it's inability to scale to use multiple processors for improved processing speed and power.
As far as handling 40-50 users, there is really no (practical) difference in using SQL Server Express than a "full-blown" version of SQL Server, for the size of your application (from what you imply in your question).
So long as you use good coding practice when creating SQL Server connections (i.e. opening your connection, performing a query, and closing the connection again ASAP) as well as taking advantage of the built-in connection pooling (which will get used automatically if you use the same connection string each time you connect) you should be fine.
The biggest issue you're likely to run into is hitting the data limit (4GB per db) rather than any performance issues, but this obviously depends heavily on the nature of your application and the quantity of data your users will generate.