"Lock-in", i.e. (economic) transaction costs, aren't exclusive to Microsoft. For every system or solution or whatever that anyone adopts there is some non-negligible cost to switch to something else.
Migrations costs and lock-in are orthogonal concepts.
Migration costs are just the costs of switching from one solution/product to another.
Lock-in is when you are in some form dependent on a monopoly.
Insofar as lock-in causes high migration costs, that is mostly because it forces you to migrate in the first place, unless you want to stay dependent on the monopoly. If you are using some software, say, and it's lacking a feature that you need, in a lock-in situation, you have to either buy that feature at the price the copyright owner of that software asks, or you have to switch to different software (which in turn is expensive because your data is, presumably, stored in some proprietary format and the company that knows how to read it is not keen to help you with migrating it to a different software). If you were using free software instead, or proprietary software that you yourself hold the copyright to, the migration would be cheaper because you would have the code to help you with migrating away from it--but more importantly, you probably won't have to migrate at all, because you can just hire any competent software development company from the market to implement your features, and if one company is overcharging you, chances are, you'll find one that is not.