The worlds of HFT and the rest of algorithmic trading are very far apart. For HFT pickup the exchange documentation for each exchange. Memorize how order types. Get a copy of RegNMS. Memorize that as well. To be effective an HFT needs to exploit the market structure. Learn how processors work. How do you avoid a pipeline stall or a cache miss? Become an expert in c++. Maybe pickup some verilog for those pesky FPGAs.
The rest of algorithmic trading offers a lot more flexibility. In either case read 'Trading and Exchanges'. It will give you a good overview of the mechanics of all different venue types. Then its thinking about how to build better algorithms then the next guy, or get better data.