I am about 1 year away from finishing my PhD (hopefully), and have recently seen a few advertised postdoc positions that I think would be perfect for me. Most positions indicate that the start date is around 3 months away. My question is: how early is too early to apply? Is it worth applying for these positions and indicating in my cover letter that I wouldn't be able to start for another year? Is it OK to email professors directly and inquire informally about open positions in their labs at this stage?
You certainly can apply early - the worst they can say is "No", which is functionally equivalent to what happens if you don't apply. It's also a perfectly fine time to start asking around.
The answers will depend very much on the postdoc. For example, right now I have a postdoc position in my lab where "A year from now" is 1/3rd of the way through funding, so it likely wouldn't be acceptable, as I needed a postdoc working right away. On the other hand, there are other positions where starting would be considerably more flexible.
The right time to start approaching potential postdoc advisors is once you have a good sense of when you're finishing up. Even though an advisor may say the funding will start in three months, there may be delays, or someone might end up staying longer than expected, or the hiring process may run into issues (especially for foreigners). So making sure you start the conversation with enough lead time is always better than waiting until you're just a few months away from finishing.
Emailing professors is good. Applying for a postdoc starting in three months when you still have a year to go isn't worth it, though there is no harm in it either. Most postdocs you find will have hundreds of applicants, many of them good, so it is unlikely that they will hold the position for you. I suggest just applying to the ones that come up closer to when you are finishing.
The exception I think is if you are an excellent fit for a position that is specific in its requirements. Then you should at least contact the professor and see what they think.