Non-fungible tokens (NFT) represent one of the most important technologies in the space of Web3. Thanks to NFTs, digital or physical assets can be tokenised to represent their ownership through the usage of smart contracts and blockchains. The first generation of this technology, called NFT 1.0, considers static tokens described by a set of metadata that cannot be changed after token creation. The static nature prevents their wide spread as they do not support any meaningful user interaction. For this reason, its evolution, called NFT 2.0, has been proposed to make tokens interactive and dynamic and enhance user experience, opening the possibility to use NFTs in more ways and scenarios. The purpose of this article is to review the transition from NFT 1.0 to NFT 2.0, focusing on the newly introduced properties and features and the rising challenges. In particular, we discuss the technical aspects of blockchain technology and its impact on NFTs. We provide a detailed description of NFT properties and standards on various blockchains and discuss the support of the most important blockchains for NFTs. Then, we discuss the properties and features introduced by NFT 2.0 and detail the technical challenges related to metadata and dynamism. Lastly, we conclude by highlighting the new application scenarios opened by NFT 2.0. This review paper serves as a solid base for future research on the topic as it highlights the current technological challenges that must be addressed to help a wide adoption of NFTs 2.0.