Welcome to the bewildering world of signal processing and embedded systems. Enjoy your stay.
Vibration detection could be done in a variety of ways. In this particular instance, it's done with mics. Here's a rough sketch as to how:
You have an array of mics. An array in this case is an arbitrary physical arrangement. Each mic has a range of detection both in terms of distance and in terms of frequency. Frequency determines the perceived pitch of a given sound. More on this later.
You smack the mic containing surface with something like a hand or a mallet or whatever. This generates sound waves which travel through the material as well as the surrounding air. By determining the difference in pitch and loudness, an approximate location can be determined. The more finely tuned the mics are and the more of them there are, the better the approximation.
You then have a simulated instrument surface in the software. The mic(s) measures the loudness and the pitch and transmits this to the computer which then maps that input onto the virtual space of the instrument. Once it figures out where on the virtual instrument the input is registering, it will play the appropriate sound. It can also figuring out additional information for better precision, reflected waves or additional mics can be used. Specifics will vary by algorithm and in the case of DrumsAnywhere, that algorithm is proprietary.
In terms of general algorithms, you'll want to look up audio processing algorithms, such as the Fast Fourier Transform and Wavelet Transformations. There's a fair amount of math involved including differential equations and linear algebra if you really want to understand the deep guts of the math.
Python or Matlab are ideal languages for this sort of tinkering. Python with numpy and scipy will serve effectively. Matlab costs a decent amount but has all manner of signal processing toolkits.