There is a ton of activity in the space, of course. I would first glance at the ECMAScript efforts of late (ES6 and ES7 in particular). You'll probably need to use Node.js, since it tends to be the center point of JS development, regardless of the tools and frameworks you choose.
The first piece is your build tool. Grunt and Gulp are the two top build tools. Gulp is more recent and seems to have more uptake. If you haven't written a build script (e.g., gulpfile.js) I recommend building one up from scratch rather than using someone else's. You could use others' for examples of what to do, but build your own from scratch according to your needs, as you go. You'll learn more and understand the whole thing that way.
The next choice is whether to use a transpiler or not. The two biggies are Babel (ES6 transpilation to ES5 or ES3) and TypeScript. You can skip this step at first, but it will be a foundational aspect to your build, so don't wait too long. If you do skip it, loop back once you've made your other choices.
The final big choice is framework. The big ones right now are React and Angular 2. There are many others, of course (Vue, Inferno, ...). You might try a few efforts here to learn about them if you don't have a clear initial default choice.
There are secondary choices depending on which main framework you choose. For example, if you use React, you will likely need a client-side store. Flux used to be the default. Now it's likely to be Redux or, more recently, MobX.
There hasn't been a better time to be a JS dev. There's still a lot of churn, but there's also more stability than there has been in the past few years. You can stick with technology choices for a year or two without major disruption if you make course corrections. Good luck!
I just wanted to add that I think a good JS IDE is worth having. I mentioned VS Code before which I think is great, but I'll also suggest JetBrains' WebStorm[2] which has excellent JS support (and TS support), but in my opinion VS Code is getting to be just as good.
IMHO to be a good frontend developer you need decent comprehension of JS/CSS/HTML. Some framework experience. Some backend / upload knowledge. Know git. Not an asshole to work with.
To be a better frontend developer you need human skills, strong raw JS, the ability to move between frameworks without whinging, and solid knowledge of cross-platform desktop/phone/tablet/TV development. Can happily code a frontend direct from either an API spec or a vague informal concept. Have written and used automated tests with git.
To be an awesome frontend developer you need all of the above but are comfortable doing web as well as multi-platform native development, can run docker or another toolchain for rapid iteration and integration with backend developers and QA teams, have great people skills, have executed multiple projects where security/reliability/offline mode/multilingual design were front and center, and have learned basic lessons about cutting corners by maintaining at least one or two nontrivial projects long term.
As a frontend developer who's in concurrent agile, multidisciplinary projects, the people skills and the ability to connect development with design are an absolute requirement. Being able to float in between the disciplines, catching potential problems and iterating together to make the end result more then the sum of its parts is invaluable. A strictly development scrum with a heavy development lead demands less people skills of its developers.
In my opinion, a good frontend developer writes high quality code and works well with other developers. A great frontend developer also works well with other disciplines and enables them to put more ambition in a project, while minimizing the extra amount of work this generates.
But a lot of the major players (e.g, Webpack/React/Angular[!2]/TypeScript/etc) have all been around for more than a year, so context is important.
That said, you can look at stuff like the HN who's hiring trends, or StackOverflow trends:
http://www.ryan-williams.net/hacker-news-hiring-trends/2016/...
http://stackoverflow.com/research/developer-survey-2016
Personally I'd invest in mastering React, but YMMV.
It's Vue.js these days.
Strange times, isn't it? 10 years ago, a front end job would require a comprehensive understanding of CSS, the DOM and JS. Now it's all about framework X and Z, build tool A or B, Typescript and what not, like these tools are so complex one has to be a specialist in these tools because they can't be learn in a few days.
Meanwhile, micro-services are all at rage on the server and back-end developers deemed big frameworks like Rails,Spring,Symfony and co an anti-pattern because complexity is bad (Go)? But stupidly complex tools and frameworks on the client are OK?
Microservices don't reduce technical complexity. If anything they add to it. 10 years ago I didn't have to worry about container orchestration and all that comes with that. New problems present new solutions.
I definitely recognize that the transpilation era of JavaScript feels incredibly bloated. It is exacerbated by the overlap with a lot of the tooling. It's exponentially worse when you try to understand solutions to problems you don't have yet.
I wouldn't want to build a marketing website with Bootstrap but it provides web applications with a consistent look and feel.
Once you learn it, you can also use it to layout native mobile apps with react-native, or hybrid with ionic...
There's some free stuff out there like Dan Abramov's videos on react Redux (he is the creator of Redux) that will really help you understand the concept of stores, actions and reducers, but you'll also find videos on Angular etc.
Also I would suggest you learn stuff by doing small projects. Reading only has never worked for me as well as getting hands dirty.