Today you can easily create a decentralized application (a dapp) on Ethereum blockchain if you know how to write in Solidity language. It’s a relatively new programming language that is blockchain oriented and its main purpose is to let you write transaction handlers for your dapp.
Here I would like to share with you my list of resources where you can learn and master Solidity and get a better understanding of how to write Ethereum dapps:
https://learnxinyminutes.com/docs/solidity/ - a quick overview of all features of Solidity language.
http://solidity.readthedocs.io - an official Solidity documentation.
http://CryptoZombies.io - an interactive tutorial where you create a collectible game right in your browser.
http://ethernaut.zeppelin.solutions - another gamified way to learn Solidity by guys from Zeppelin Solutions.
https://consensys.github.io/smart-contract-best-practices/ - Ethereum Smart Contract Best Practices — this is a must read.
https://coursetro.com/courses/20/Developing-Ethereum-Smart-Contracts-for-Beginners - a video course for beginners.
https://github.com/onitsoft/BitDegree-Solidity-Course - Solidity course by BitDegree.
Feel free to share any other useful resources on Solidity in comments ;)