Minecraft is written in Java and C++, and although the class files are obfuscated, the community has figured out most of the inner workings of Minecraft. Notch himself gave notes on a common format used by Minecraft, the NBT format. From this, the community has derived information for the files that use the NBT format.
The NBT format is used by almost every file in Minecraft. It is a GZipped tree structure of tags, where each tag has a type, name, and payload based on the type. In 1.2 snapshot 12w07a and above, an additional tag type was added to the original tag types that existed since Indev.
Each edition of Minecraft uses its own file format to store levels. The following information about the different level file formats can be used by software developers to create map editors, servers, level generators, and other programs. Blocks, Items, Data values, and Entities are common to all map types.
Minecraft Coder Pack used to create and edit mods to both the Minecraft client and server
MCAnimator - a modeler: used to create custom models which can have textures and animations. Has many tools to help you in the creation process. You can export to all the latest Minecraft versions. It has a library that allows perfect animations control.
Techne - the modeler: used to create custom models for in game use, comes with library of standard models.
FMCModeler can be used to create custom models for in game use, can also create models from Java code (with some restrictions). Written in Flash. It appears to be abandoned, but it's still working when used with CustomRenderer.