My flight controller implementation is based on a MK20DX128 chip (found in Teensy 3.0 dev board), there is also an "older" outdated implementation of simple flight controller for ATmega328 (found in many Arduino boards, for this implementation i was using Arduino Nano).
Step 1.: Hardware and parts Let me start by listing the essential components that will you be needing for a working quad (of course you can pick your own hardware from a scratch) but i will list just a few basic parts anyway.
quadcopter frame (your own, or you can buy one on ebay)
4 brushless motors (at least)
4x ESCs (electronic speed controllers) set of propellers (i advise you to get more, if you are planning to experiment with kinematics) lipo battery sensors (i will be using mpu6050 chip on a simple breakout board)
Microcontroller (either some Arduino compatible board, Teensy, or any uC that will suit your needs)
TX system (more on the cheap side, you could use Turnigy 9x or Turnigy 9xR with a receiver that supports PPM output) - more on that later
Step 2.: Sensors Its time for you to learn what accelerometer and gyroscope actually do. (yes really)
accelerometer - measures g-force, its great to determinate pitch and roll angles, however accelerometers are acceptable to vibrations and shock
Graph displaying accelerometer angle (shaking in hand) gyroscope - gyroscope measures acceleration rate (which is perfect for quadcopters), gyroscopes aren't affected by vibrations however gyroscopes tend to drift over time (more on this later)
Graph displaying gyroscope angle drifting over time
From the block diagram on top, you could probably have guessed that getting reliable data from those 2 sensors won't be so easy, but worry not.
Step 3.: Kinematics Part where all the sensor "magic" happen, i