This really comes down to just how paranoid you are and how sure you want to be that the addresses generated are completely secure.
1) Disconnecting my laptop entirely from the internet, then installing Bitcoin Core from a USB drive.
The laptop would have been connected to the internet at some point. It is possible that you could have received a malware on to your laptop which can transmit data even when offline (yes such malware exists, it does some crazy stuff).
More importantly, it would be possible that some undiscovered malware got onto your laptop while it was connected to the internet that can influence the choices that Bitcoin Core makes when generating private keys and addresses. In other words, the malware wouldn't need to transmit the data while offline, it would just need to trick your Bitcoin Core into choosing private keys with an algorithm that the attacker can reproduce on their own system. Your keys would look completely random to you, and until the attacker empties your wallet, you'd never know.
Are you likely to have such hidden malware running on your computer? No. But if you really, really want to be safe, then this is an attack vector to be aware of.
2) Running Bitcoin Core and backing up the wallet.dat file on a few external hard drives.
So you would still have to run Bitcoin Core and connect to the internet?
No. It isn't necessary to connect to the internet to run Bitcoin Core.
It is possible that, since your computer was online, malware could be on your computer and then that malware writes itself onto your hard drives waiting for them to be plugged into a computer.
Correct, it is possible that these external hard drives have malware on them (perhaps even installed in their firmware). Again, this is unlikely (especially if you purchase brand new hard drives and never connect them to any other computer), but it is an attack vector to be aware of.
3) Disconnecting all the drivers and formatting the computer when the process is done
When you format, make sure you overwrite with 0's.
There are a variety of different forms of formatting of hard drives. Some of them leave all the data on the drive and simply remove the indexes that indicate where that data is stored. Even if the original data is all overwritten with new values, it can sometimes be possible to retrieve data from the slight weak data signals that may remain.
US Department of Defense in the clearing and sanitizing standard DoD 5220.22-M recommends the approach "Overwrite all addressable locations with a character, its complement, then a random character and verify"
I was wondering if there are any flaws in my method? Any way my private key touches the internet?
It's relatively safe. There are additional steps you can take to increase the security, but doing as you've stated isn't a horrible method.
And is there a safer way of generating a wallet than Bitcoin Core?
I really like the idea of rolling dice or shuffling cards. Then I don't need to rely on a computer program generating a random enough private key. There are a variety of tools that will convert a private key to a bitcoin address, and most of them are simple enough for an amateur programmer to confirm that they aren't doing anything malicious.
If you know how (or are willing to learn how) to convert a private key to Wallet Import Format (WIF), then you can even use Bitcoin Core to calculate the address from the value acquired from the dice or cards.
How do I extract the plaintext privkey from the wallet.dat file?
In the "Console" found under the "Debug Window" in the "Help" menu, you can run:
dumpprivkey 1YourBitcoinAddressHere
Replacing 1YourBitcoinAddressHere with the actual bitcoin address for which you want the private key.
It would be safer to use a paper wallet.
What software are you recommending for creating the paper wallet?
Have you considered the fact that a networked printer can be hacked and the data sent to it to be printed can be captured?
How well reviewed is the software you are recommending?
Wouldn't you need a computer to run the paper wallet generating software?
If so, wouldn't that software and computer be subject to all the same risks as running Bitcoin Core?
Much like the OP proposed method, a paper wallet created with bitaddress.org running on an offline computer is probably pretty secure, but there are attack vectors to be aware of, and steps can be taken to increase the security.