Why are non-16x textures bad?
Let's start with making an example 32x32 texture:
I specifically made this texture with these properties:
- Every pixel is different color in repeating patten;
- It has 1 pixel wide transparent border;
- The "rod" or whatever it is, is 3 pixels wide and diagonal;
- It has shading in middle;
- It's not centered.
As horrible as this texture is, it will serve very well to show how bad things can get.
So what's wrong? It looks fine to me!
Ok, but now let's change our GUI scale of Minecraft, aaaaand...
..it looks terrible!
What's the technical reason behind this?
It's pretty simple, actually. Let's assume that there are only 3 GUI sizes - Small, Normal and Large. Each one has different scale and actual slot size - 16x16, 32x32 and 48x48.
So what happens when you try to scale your texture inside that slot?
No problems with 16x textures:
16 / 16 = 1 32 / 16 = 2 48 / 16 = 3
So as you can see, each "minecraft pixel" will be either 1, 2 or 3 real, screen pixels wide/high. But!
16 / 32 = 0.5 32 / 32 = 1 48 / 32 = 1.5
Now you see that each mc pixel will be either 0.5, 1 or 1.5 pixels wide/high. As you can imagine, it's difficult to display half pixels, so it tries it's best to scale it to match the size.
Most people don't even notice this, because they always play on single GUI scale and don't test their textures on other scales.
How does it look in-game, on ground?
Not bad, actually. Reason for that is that it's no longer in GUI - it's size is much much larger on your screen, plus is constantly rotates.
Ok, but what about block textures?
Consistency and artistic guidelines aside, it's fine to use higher resolution textures on blocks, because similar to what it looks like on ground, in inventories they are already bent and rotated and aren't facing the screen directly.