Is easy to make the blink without delay measure a 24hr period. The number of milliseconds is simply 246060*1000. But millis() is not super accurate and over a few days it will lose or gain a few seconds, and over a period of months this could grow into a few hours. Plus, the temperature will affect how quickly it looses or gains time. If running on battery power, the battery voltage could also affect the accuracy. This might still be good enough for you, I don't know.
But you also said that you want to do things "at specific times". This is much more difficult without an rtc. You can give the Arduino the current time when you upload your sketch, and it can keep time from there. But as soon as you reset the Arduino, or remove the power, when it starts up again, the Arduino will go back to that time of sketch upload. Alternatively, you can attach a keypad and display, and get the user to key in the time when the Arduino starts up. It's much simpler to use an rtc!
If you get an rtc, look for one based on the ds3231 chip, not the older ds1302 chip. They cost only a little more and are much more accurate and temperature stable.