Everyone in the BTC space seems to suggest that running a full node is the way to go. But Linux has a huge attack surface and I don't want to lose my BTC by having my wallet on an insecure OS. What is everybody else doing? Version 0.16.1 doesn't support HW wallets, so are people really keeping their BTC in an actual satoshi (bitcoin-core) wallet? Or using HW wallets, and the node is just for overall network security (and bragging rights)?
As a quick answer, some wallets allow you to specify a node that they will connect to. You can run your own node, and point your wallet at it. Beyond being trustless, this has an added bonus of increasing your financial privacy, especially if your node is connected to the tor network.
Note that many such wallets are ‘light wallet’ mobile applications, but I would trust a mobile wallet over a desktop full node wallet myself. This offers a good solution of maintaining sovereignty for a day-to-day use wallet in my opinion.
For larger amounts, using a HW wallet or other cold storage mechanism is highly recommended!
Since this is pretty opinion based, I'll offer my 2 satoshis.
This sort of addresses the root question which is "Why would I run a full node?". There is also a separate question of how should I secure my funds (or what wallet should I use)?
The main thing you need to protect is your private keys (and any access to use them). If you never import them into the full node wallet, you don't need to worry about someone controlling your funds by getting into your box and executing transactions. This goes for any "hot wallet" or online wallet.
If you keep your private keys offline, you can sign transactions with an offline wallet application or a hardware wallet. If you also run a full node, you can then submit the transaction using the node's RPC interface, see: Send Raw Transaction.
There are many libraries and applications to help you with this, here's an example of a list: Awesome-Bitcoin
In the Original Whitepaper the concept of a miner and a full node were generally the same machine. Today, miners are specialized hardware optimized for the sha256 algorithm.
For some, running a full node provides a low-latency interface to the network for submitting blocks (mining), or it provides the same interface for a 3rd party application like a block explorer.
However, in my opinion, the purpose of running a full node is not for the wallet, but rather to participate in the consensus of the network by verifying transactions. If you own and transact bitcoin, don't you care if your transactions are executed properly and that your currency isn't being inflated? If you don't run a full node you are trusting others to validate this for you.
Many people don't feel as strongly in the mission of creating a decentralized, censorship-resistant global digital currency, but if you don't cast your vote by running a full node and validating the blocks, then you can't complain about the current system of currency.