I need to somehow set up automatic e-mail to email different users, AT DIFFERENT TIMES, to remind them that their deadline is 2 weeks ahead (each user has different deadlines) is there a way to do so?
You can code a long running workflow that hits trigger points, or use a state machine to manage where in the process it lies. How difficult or cumbersome this is will depend on your particular version of SharePoint. If you are on 2013 - then 2013 workflows build thru VS work well for long running processes.
If you are on 2010 or 2007 than I would avoid workflows that are long running. I would look to creating either a time job or use a PowerShell script to manage the messaging. If these are one off or require some adjustments be made I usually prefer PowerShell as changes can be made immediately and tested and they don't require any IIS resets or downtime to deploy. Just run them via Task Scheduler.
If you find custom solutions or PowerShell method not a great way to go you can look at 3rd party options. Nintex, AgilePoint, and K2 are great products that allow you to create workflows with build in reminders and escalation paths.
You can do it with timer job or with console application. I think console application way is better then timer job because easy to code maintenance.
If i were you , i bind console application to task schedular.