Editors and IDEs
A text editor is software to write and modify plain text files. They are used to write code. As opposed to word processing software they do not normally allow formatting.
An IDE is an integrated development environment, software that provides a number of tools in combination with a text editor and usually a compiler. There are a number of free and open source IDEs available. Use whatever text editor or IDE you like. Some editors and IDEs have good standard defaults (with batteries) for particular languages or use cases. Almost all editors with wide userbase allow community-created plugins that extend the IDE’s capabilities and make it easier to code.
Brackets - A contemporary UI with good defaults and support for Javascript. Excellent for coding web projects. Not many options for other languages.
Sublime (SublimeText) - a great minimal and powerful text editor with a history of plugins that combine to make it a powerful editor. Sublime costs $80 to remove the nagware pop-up that reminds you to pay. The software is fully functional regardless.
Atom - A large project that appears to emulate Sublime at first but is built on Javascript/electron. It is young but sophisticated, with a large number of themes and plugins. You can build it into a custom editor for your coding needs. It is a project started by GitHub.
Vim and Neovim and their rival Emacs - Vi/Vim/Neovim are ubiquitous minimalist text editors built on a concept of using keybindings in combination to build up powerful text editing capabilities. They can be customized extensively and made to work like an IDE with plugins. Extremely high learning curve. Emacs is a text editor and environment with mail, debugger, calendar and many more features. It is technically an editor for the Emacs lisp language with extensions to make it work as an individually customized text editor.
Codepen - an online-based web IDE, particularly built for HTML/CSS/Javascript
Glitch - The new kid on the block. Glitch has a friendly UI and allows you to code a website or many other languages and deploy them to the web. It combines a web editor with version control like GitHub.