Estimation is important for developers. If you know how good (or not) you are at something, and you have a clear set of requirements, you should be able to tell your team lead / manager how long a task will take. This is important to the project manager because they may use these estimates for budgets and scheduling which may feed into the budgets/schedules of larger enclosing projects. Of course, "stuff" happens and estimates may turn out to be wrong. This is expected, to a certain degree, so whoever's managing the project might build some padding into your estimates to handle the "stuff" that happens. Of course, if your estimates are wildly off base from your actuals, make sure you can justify it!
As well as helping the overall project, being good at estimating will help you in your day-to-day tasks. You'll know what tasks you can finish before lunch, between meetings, what tasks not to start at 3 pm because they'll take you well past 5, etc... so YES, it's a good skill to have.
It takes time to get good at it, and some are better than others. A lot of that comes down to the skills you have and the task assigned - you'll probably have more accurate estimates for a skill you've been using for years on a clear and simple requirement than a new skill with a vague and murky requirements.