Normally, a flutter is done by simply pushing the jump button and holding it until a flutter begins, however, this method does not give you maximum height. What you want to do instead is, release B at the peak of your jump and then, as quickly as possible, repress it to do a perfect flutter. Doing this will allow you to gain a few extra pixels of height. You have a 3 frame window to do a perfect flutter, assuming that when you release B, you repress it on the next frame. Some places are more lenient, like 2-4 for example, where you have 5 frames and some may be more strict. (more testing needs to be done)
They can be used to access several areas that are otherwise too high to reach, such as:
- The area above the !switch in 2-4.
- The last room of the bottom-right room in 4-4. 
- Traveling over the stone column in 6-4. 
- After obtaining the key in 6-6. 
The gif demonstrates how a normal flutter does not give you enough height to reach the ledge and then how a perfect flutter allows you to just barely make it with the extra height.
An extended flutter is performed by bouncing on an enemy and then holding B. There are a couple ways to get the most height out of an extended flutter:
1. Hold B just before bouncing on the enemy to get a big bounce. Not holding B results in a much smaller bounce.
2. Release B and manually initiate the flutter around the peak of the bounce, rather than just waiting for an automatic flutter. This is sort of the same idea as the perfect flutter.
3. Follow the extended flutter up with a manual flutter to gain a bit more height.
- Extended flutters are used in many levels to reach otherwise unreachable areas like in 1-1 to skip the beanstalk or in 6-4 to travel over the stone column, skipping the need for a key.
- Extended flutters can also be stored via a perfect jump  or by bouncing on a !switch to allow for extra height 
The gif demonstrates an extended flutter, followed by a manual flutter as part of the Warpless route in 6-4.
Flutters can be chained together indefinitely so that Yoshi does not lose height. This is only used when needed such as the water section in 3-4, the platform skip in 5-4 or the lava skip in 6-4. Since fluttering is slower than running at full speed, you only want to flutter when it's necessary. You have a 9 frame window to maintain height but you also need to release and repress B within 1 frame to maintain height.
Lava skip saves about 3 seconds over riding the log. For some people, it's too risky to do, especially with late game nerves and how little time it saves. If you skipped both mid-rings up to this point, dying means you'll have to replay the entire level resulting in multiple minutes lost. Even if you get the mid-ring just before this room you'll still lose 20-40s depending on where you fall in the lava.
The notorious 5-4 skip is by far the hardest trick in the entire game, way harder than lava skip in fact. It can take upwards of 1000 attempts to even land it once, but the time it saves is huge, making it totally worth learning. Failing the skip results in losing around 25-70s depending on where you fall. The time lost is even greater in 100% due to collectibles (30-90s).
There are 4 ways to do the skip, each one a little bit tougher than the last. (Half skip is a lot more manageable though).
Any% Time Save:
- No skip (using platform): 2:27
- Half skip (w/ shy guy): 1:31 (-56s)
- Half skip (w/o shy guy): 1:24 (-1:03s)
- Full skip (w/ shy guy): 1:10 (-1:17s)
- Full skip (w/o shy guy): 1:03 (-1:24s)
Full skip saves over 1 minute in 100% and half skip saves about 40s.
Some runners find using the shy guy (shown in the comparison video to the right) easier, but it loses about 7 seconds compared to just using the bats. Although it requires more total flutters, the hardest part of 5-4 skip for many people is the first long stretch of flutters, and going up to the shy guy platform allows you to end this stretch of flutters a bit earlier.
Getting the bats to come down low enough for you to bounce on requires lining up your flutters in a particular way. Here is an image gallery that shows how to do it consistently.
Backup strat if the first bat does its circle early: 
Note that this is actually 1-2 seconds faster than the standard strat but it is a bit risky. Optimization for the start of the skip: 
Fluttering Frame Data
andy_kuma, Brooklyn9d5 & Thurler investigated the frame data for fluttering. First we did some manual testing. The results can be found in this speadsheet!
Later we did automated/scripted testing via Lua and an emulator. The results are as follows:
Perfect Flutter From A Regular Jump
• Delta/frame: the length of time that the button was not pressed. • Green values: an increase in height (in pixels). • Dark green values: enough height for the perfect flutter in 2-4 if you were against the wall (doing a left->right will improve your chances at getting it). • Blue values: no height lost or gained. • Red values: loss of height.
- You need a 1 frame repress to not lose height during reflutters!
- There are 6 frames where you can gain height.
- And frames where you can keep your height.
- For the first and last 2 working frames, the height loss is greater if you miss the 1 frame repress.
- It's better to aim for the middle of the working frames because 2 frame repress reflutters wont lose as much height.
- DROP means that no reflutter will be initiated.