I think the main skill is getting an intuitive grasp of expressing a problem in machine-learning language, which usually means "I have this data set, what are the most salient features I should be using to train my algorithm to tell me things". The main challenge to solving a machine learning problem in my experience is the curse of dimensionality.
Aside from that it's still trial and error. As a sibling pointed out the best you can do is get a good grounding in stats and sampling theory so that you ensure that you're not overfitting your data.
There is no rule-book for what kind of classifier works well on your problem, aside from reading the literature and seeing how well other people got on. There are exceptions, for instance if you're doing image classification then nowadays it's convnet or bust. But still you're going on instinct rather than "If you have problem <X> you should solve it with machine learning algorithm <Y>".
As with all these sorts of things, knowing the theory is useful if you want to start implementing your own classifiers from scratch, but nowadays it's approaching wheel-inventing territory. Machine learning libraries are mature, powerful and increasingly easy to use (like sklearn). Some of the libraries like Tensorflow are specifically geared so that you don't need to know about the implementation, you just read a description of the CNN and you can express it in a few lines of Python.
Otherwise using them is still pot luck:
- How many training samples will be enough for your problem to avoid overfitting/poor results? You won't know this until you try.
- What features are the best for your problem? There are algorithms which will try to learn for you, but in most cases that's a niche application and will require a lot of twiddling.
- You still (usually) have do a grid-search to find the optimal parameters for a particular method.
- Do you care which method you use, say an SVM vs Random Forest, if you get 90% accuracy consistently?
- Be mindful that for many problems in machine learning, 80% accuracy is considered exceptionally good. You shouldn't expect perfect performance so sooner or later you have to say good is good enough.