How can I control things without using delay?
Interrupts are a common way to get things done while something else is going on.  In the example below, the LED is blinking without using delay().  Whenever Timer1 fires, the interrupt service routine (ISR) isrBlinker() is called.  It switches the LED on/off.

To show that other things can simultaneously happen, loop() repeatedly writes foo/bar to the serial port independent of the LED blinking.

#include "TimerOne.h"

int led = 13;

void isrBlinker()
{
  static bool on = false;
  digitalWrite( led, on ? HIGH : LOW );
  on = !on;
}

void setup() {                
  Serial.begin(9600);
  Serial.flush();
  Serial.println("Serial initialized");

  pinMode(led, OUTPUT);

  // initialize the ISR blinker
  Timer1.initialize(1000000);
  Timer1.attachInterrupt( isrBlinker );
}

void loop() {
  Serial.println("foo");
  delay(1000);
  Serial.println("bar");
  delay(1000);
}


This is a very simple demo.  ISRs can be much more complex and can be triggered by timers and external events (pins).  Many of the common libraries are implemented using ISRs.