I was struggling today to connect to an instance of SQL-Server express from a remote machine.
I did every steps that Microsoft mentioned, and didn't have luck
1 - I enabled TCP protocol, and Named pipe protocol.
2 - I checked the checkbox of "Allow remote connection to this server"
3 - I started SQL Browser
and no luck.
Then I thought it is a firewall
I added SQL server application "sqlservr.exe" to the exception list of the firewall, and still no luck.
Then, I started to read about what the browser service is doing.
I added the SQL browser service application to the exception list of the firewall, and voila, it worked.

So, what I learned is , the browser service is an application that will listen to any connection request on any port.
When you connect to SQL server, you don't specify a port.
and the Browser will listen to any request on any port, and route it to the Sql server Service.
If you want to connect on a specific port, and you add that port into your connection string, then you don't need the Browser service running.