NPM: Node JS package manager, helps you to manage all the libraries your software relays on. You would define your needs in a file called package.json and run
npm install in the command line… BANG your packages are downloaded and are ready to use. Could be used both for front-end and back-end.
Bower: Front-end package manager. Not that much good and is not useful these days since most of the devs are relaying on NPM.
Grunt: You can create automation for your development environment to pre process codes or create build scripts with a not very simple config file. It was great back there in 2013 but not much these days.
Webpack: The coolest kid in the town. It will bundle your app into other bundling patters so you can use all the libraries available in NPM right into your front-end code, load different modules and do many other things. It is amazingly flexible and can create strong development environments. Very trendy these days.
Browserify: Similar to Webpack but less powerful.
Slush and Yeoman: Project scaffolding systems. You can create starter projects with them. Not good that much, use a Github boilerplate instead.
Express: Node JS web application framework. Could be used for routing and anything else is covered through middle-wares. Very popular and beautifully designed so if you want to create a web application project with node, you are probably using it (koajs is also know as the next generation of this framework)