Most mobile devices have a built-in accelerometer, and many also have a gyroscope. Without getting too technical in describing how it actually works, the difference between the accelerometer and the gyroscope is what they measure. The accelerometer measures acceleration within the 3D coordinate system, and the gyroscope measures rotation.
You can access data from the device's accelerometer using the Vector3 Input.acceleration property.
The coordinates of Input.acceleration line up with the scene based on the rotation of the device, as shown:
Simple examples of this involve moving an object around a scene when the device is moved, using something like the following within an Update() function on the object:
transform.Translate(Input.acceleration.x, 0, -Input.acceleration.y);
The gyroscope uses more complicated mathematics to get more precise movement...