I'm a massive advocate for just diving in and breaking things when you start learning something new in the tech world. However, it's crucial to set achievable goals for yourself.
I see it all the time: someone new to self-hosting, fresh and green as grass to Linux and Docker, with a goal to remove all their data from vendors and providers and take back control of their information! While I fully support this, such tasks aren't something you can just Google your way through and follow guides. In the world of self-hosting, nothing goes to plan, and you need to know what you're doing to troubleshoot and navigate through these situations.
So, how do you learn, then? Like I say, have a goal, dive in, and break things. But instead of saying, "I'm going to self-host my own Nextcloud to manage all my data," and then following a guide, uploading all your data to Nextcloud, deleting your iCloud account, only to find your Nextcloud goes down and you don't know how to troubleshoot, resulting in lost data, start small.
Yes, moving to Nextcloud is a great option, but start small. Learn what it takes to deploy Nextcloud. Document your learning process. Was that the best way to deploy it, or are there other methods?
Next, consider the best way to store and manage data in Nextcloud. Do you have enough space for the long term? Try uploading and accessing your data. How does it feel, and do you see yourself using it long term? Then, think about external access. How will you access Nextcloud outside your network or allow others to access it? This brings us to VPNs and learning what they have to offer.
In this scenario, rather than rushing ahead and committing, step back, break things down, and learn at every step. Get comfortable with deploying and breaking it, learn new methods of deployment, and troubleshoot as needed without committing to it. This way, you feel no pressure about breaking it.
Don't commit immediately. Have a realistic goal, break it up, break it, learn, document, and repeat.