This is a notes post and may not be as easy to follow as a de facto blog post.
Radio waves are literally everywhere always passing through us. FM/AM radio, HAM radio, WiFi, Bluetooh, car keys, garage door openers, and so much more all use radio waves to transmit information across space. Radio waves help comprise the EM spectrum, so they travel at the speed of light.
Being related to light, a radio wave is an analog signal which means we can model it mathematically using a sine wave. With this being said, the wave's attributes include its frequency, amplitude, and phase. In old-school, analog radio systems, we communicate information by changing the signal's frequency or amplitude over time, called frequency modulation and amplitude modulation, respectively. For example, commercial radio stations are separated by FM and AM radio stations.
Getting Hands Dirty
We can use a Software Defined Radio (SDR) dongle and attach an antenna to it in order to receive lots of radio signals. SDRs receive raw radio signals on a wide range of frequencies (often high kHZ to low GHz). The cool thing about them is that you use software to interpret the raw complex radio signals, which means you can do all the signal processing entirely using software. You can use GNU Software like GNU Radio or other open source software like the rtl-sdr and its more approachable Python wrapper, pyrtlsdr. I found GQRX to be the easiest thing to get started using for beginners with a new SDR. It was easy to download and install, and you can immediately plug in your SDR dongle and start tuning it to nearby radio stations to listen to music.
The vast majority of SDRs simply receive radio signals, but more expensive ones like the HackRF can also transmit! There's even a little hack to get your Raspberry Pi to transmit on some lower frequencies and serve as a cheap radio station. It's very approachable since the Pi is cheap, but do NOT transmit before consulting the laws in jurisdiction.
Decoding Digital Signals
WiFi, Bluetooth, digital satellites, and more using communicate using binary code. They prepare the bits in each message to be transmitted through radio waves by using digital modulating schemes instead of analog modulating schemes like FM and AM. While these digital schemes are in many ways related to their analog counterparts, they're often more complicated in some ways.
Broader Signal Processing
Cool places to learn more about Digital Signal Processing include Audio and Digital Signal Processing (DSP) in Python, Digital Signal Processing Stack Exchange, and Cal's EE123 Course.
There's a variety of applications for radio technology. I've talked about why I care about radio, and I have a list of some easy-to-find radio stations and bands you can tune yours to if you want to find some interesting stuff.