Most of the Google Glass Applications (Glassware) are developed using the Mirror API however there are some serious limitations to this method such as the lack of native access to the hardware and controllers. The Mirror API essentially pushes simplified HTML content to a users Glass with minimal methods for a user to interact with the cards.
For example, if you want to develop an augmented reality application for Google Glass (such as Ingress), you would not be able to do this via the Mirror API. This is where the Google Glass Native Development Kit comes into play. Thanks to the invite I received a few minutes ago, Google is ready to give a preview of the new developer tools to a select group of developers.
At its heart, Google Glass is an Android Phone without the CDMA/GSM radio. Google Glass runs a barebone build of Android 4.0 Iced Cream Sandwich. Glass owners can easily sideload APK files and run them. The problems come down how a user interacts with Glass. Things like touchscreen input must be replaced with gesture controls and voice commands. Screen real-estate and battery life are also concerns and developers need to modify their applications to run optimally on Glass.
Google is previewing the Native Development Kit which will make it easier for Android developers to create Glassware that will run properly on Glass. Developers will be able to use Java or C to create their applications and any current Android developer should feel at home. This essentially opens the door for a slew of augmented reality applications and games to be developed for Google Glass.
In terms of development, I personally prefer using the Mirror API as I am a PHP developer rather than a Java developer. The Mirror API allows any developer with a basic knowledge of REST APIs to create basic applications but there are limits to the REST API. I have seen A LOT of impressive applications created with the Mirror API and I cannot wait to see what developers will do with the Native Development Kit.