Implementing a basic demodulator
What type of signal do you need to demodulate (BPSK, FSK, OFDM, etc.)? While a lot of practical systems have them, you don't always need an equalizer or phase-locked loop, especially if you're just making a toy simulation where you control all the conditions. If you've never done this before, I wouldn't recommend jumping in with all of that included. Each of those topics that you brought up is a large area of study in itself, so I can't really cover all of the theory in a single answer. I would operate in the following order:


Generate a modulated signal with no noise. Build your receiver and show that you can extract the information data out successfully (since there are no real impairments, you should be able to do this perfectly in simulation).
Add white Gaussian noise to the input signal that your receiver operates on. Test the receiver to calculate its bit error rate at its output as a function of the signal-to-noise ratio in the receiver input signal. Compare these results to theoretical results found in a digital communications textbook (like this or this) to verify that you're operating correctly.
Add a frequency and/or phase offset to the receiver's input signal. Experiment with different techniques for correcting the offset in your receiver (as you noted, a phase-locked loop is one such way). Compare the receiver's bit error rate with and without the phase/frequency synchronizer in place.
Add channel effects to your simulation (i.e. multipath). This can be simulated by convolving the transmitted signal with a simulated channel impulse response. There are a lot of different channel models out there, depending upon the type of scenario that you want to test. At the receiver, add an equalizer that attempts to correct for the channel effects. The easiest-to-implement adaptive equalizer is probably one based on the LMS algorithm. Compare the bit error rate at the receiver with and without the equalizer in place.


This is very high-level and each step is complicated in and of itself, but you're certain to run into trouble if you try to do everything at once with no background.