In many cases skill development and career growth many be a function of the size of the project. The larger the team the more focused your skills you will need must be. In a small team you might be doing development and system administration. Though a large company might have a dedicated IT staff, the development teams will be expected to do some or all of the system administration.
Options such as flextime and telecommuting are allowed in most companies, but it depends on your supervisor, the customer and the job requirements. I have worked on projects that required very rigid hours and work locations, and ones where there was total flexibility.
When you measure how well known a company is, you have to measure them inside their industry. Small growing companies could offer more opportunities to you over the next 5 years. The large companies seem like great choices because they have many thousands of jobs, but if they aren't growing the pool of jobs will still not be large enough to guarantee employment for your entire career.
When deciding which to choose, I would base it on how many different projects could you work on. If they only have one or two, you will risk that there won't be follow on work when your contract ends in a year or two. But if they have many contracts in different stages, that will give you choices in a few years. Those choices are where your growth occurs. You ask for more responsibility in the next contract.