I am looking at purchasing Venti 2 for events and also what it takes to build my own plugin. Does anyone know what kind of time it takes to build a plugin that does reoccurring dates, categories and such. Would I need to put the entries into a separate database table? Getting back to Venti, has anyone used it and does it have enough custom functionality compared to creating my own?
Depending on your sites' actual event handling needs, building your own plugin similar to Solspace Calendar or Venti to handle this (specifically features like recurrences - the CP UI as well as rendering in front end) could easily take you hundreds of hours to build properly. Unless you need something very different or custom from what either of these plugins offer out of the box, I would imagine the $99 or $49 would pay off real fast if you calculated the time it'd take you, even if you were the most seasoned of developers. :-)
Both Solspace Calendar and Venti offer 30 day satisfaction guarantees, so it might be worth it to consider buying one or both and trying them out to see if they fit your needs. If not, you can always ask for a refund within 30 days, or consider modifying the plugin (rather than completely rebuilding the functionality).
Even if you're comfortable writing Craft plugins, which can be fun and easy to work with at some point, writing any software that manages time, the complexity of recurring events, and human expectations can be an endless source of
suffering challenge. Even if you're totally comfortable with both dynamics, you'd be wise to carefully evaluate what Tipping Media and Solspace have built. It sounds like either plugin could be a sensible choice, and if you wind up with requirements that neither solves you might be able to submit a feature request or write your own plugin for the far more limited scope of what you need.
You'd learn a whole lot and feel hugely accomplished if you spent a few months or years hammering out a great calendar plugin to solve your needs and do precisely what you want. Or you could pay $49-$99, use that time for something else, and appreciate the support you'll get if you ever bump into a problem!