can you do all those things in 2d? research one at a time, and implement small demos of each so you can understand them better.

All but the last one are still relevant in 2D. I say go for it OP.Eventually you can add a dimension as you understand the underlying concepts and how number of dimensions they are applied to is or is not relevant.

There are many ways to perform "invisible face" culling. Most of them use fairly simple ideas one of them is very easy to implement however the other is harder (but if done correctly a lot faster), So the first method is to calculate each faces normal then compare it to the cameras normal. Upside of this is it is fairly easy to implement and can be extremely effective however the downside is that if you have two blocks infront of each other and dont account for the visibilty of both one can be drawn ontop of the other when its not supposed to. The second method is to use raycasting, this can be much more complex due to implementation, you have to account for the cameras rotation , position , the block rotation and wether the block is visible or not. Upside is that GPUS are designed to perform these tasks with ease and the fact that the ray can be canceled after you have done one block is useful and can drastically improve performance. These methods can be implemented together which each raycast block only showing the faces required dependent on the first method and not having to do this to every block.

Of course you can choose the method and I would recommend asking the community if there are any better methods that they know of.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org