No
No, use the default NBT stuff, you can convert the BlockPos to a string and use that as the key for the health value, either by directly changing the xyz to some string and parsing it, or by converting it to a long via BlockPos#toLong and converting that to a string.
Two things, you never load the IItemHandler capability with your ItemStacks. And second of all you need to pass your IItemHandler ItemStacks to your block when you place it.
Subscribe to the OreGenEvent.GenerateMineable and set the result to deny. And create your own world generator to generate the ores and register it with GameRegistry.registerWorldGenerator
You put vertexes into it and that creates a face, which is assigned a texture via the points you specify as floats as a 0-1 scale by the bound texture. Which is bound from
Minecraft.getMinecraft().getRenderManager().renderEngine.bindTexture(resource);
Or an instance of RenderManager/TextureManager that you are provided.
You call BufferBuilder.begin(VertextFormat)
then bufferbuilder.pos().tex().normal().endVertex() for all of the vertexes you need.
Then finally call tesselator.draw.
If you need an instance of these, use Tesselator.getInstance() and then to get the BufferBuilder instance use Tesselator#getBuffer().
Yes that is the appropriate way.
Create a Gui class that extends the one the Players inventory uses.
You dont need to make packets unless you wanna do something special. Minecraft already has packets for inventories.