Speaking of e.g. iPhone and Android,
- native apps are built in ObjC/Java.
- HTML5 apps are built in JS/HTML/CSS and displayed using the native browser.
- hybrid apps are built from both, with a custom-built wrapper (in ObjC/Java) that interacts with HTML/JS/CSS code (often with the help of a library such as PhoneGap).
Native apps are non-portable but fast; HTML5 apps are portable but limited to what HTML5 allows you (for example, you can't access a SD card from JS). Hybrid approach gives you portability of a HTML app, while you can still write extensions in native code to handle system-dependent, or time-critical sections.