Use the Time, DC1307RTC and timerAlarms libraries to achieve you goals.
You will see all the functionality examples required to get your project working within these libraries.
To answer one of your questions about making the arduino read the RTC for its time instead of having to specify a time, make the function call setSyncProvider(RTC.get); followed by setSyncInterval(60); during the setup().
This tells the arduino Time library (which is what the arduino will actually be referring to for time calls) that it is to sync its time with the RTC upon start up and then keep re syncing its self with the RTC every 60 seconds. Feel free to experiment with changing the re sync intervals. I find 60 seconds to work fine.
Another thing, I would recommend against the use of the DS1307 as a RTC as it can barley keep the time to 1 minutes over a day. Its very much temperature dependant on how accurate its time keeping is. Instead, get the DS3231 RTC which is tempertaute compinsated and compatible with the DS1307 library and is good for around a minute or two a year.... and maybe $1 more in price. I swear by the DS3231 RTC.