Warning, a long-winded explanation is forthcoming. I'd like to clear some misconceptions that I think you're having.
The Arduino is really two things.
- A collection of C/C++ libraries compiled with avr-gcc and
- A small bootloader firmware program which was previously programmed onto the chip from the factory.
Yes, the Arduino IDE basically wraps avr-gcc - the AVR C compiler. Your projects, or "sketches", incorporate the mentioned Arduino libraries and is compiled with avr-gcc. However, none of this has anything to do with how anything gets written to the board. How these sketches are deployed is a bit different than usual.
The Arduino IDE communicates with your Arduino over the usb-to-serial chip on the board and it initializes a programming mode that the bootloader understands and sends your new program to the chip where the bootloader will place it in some known location and then run it. There is no "avr library which does the actual writing" - it's just the Arduino IDE opening a serial port and talking with the bootloader - this is how your debug messages get printed to the IDE during runtime as well.
Any alternative IDE will have to be able to do this same serial communication with the bootloader. Arduino is easy because of all the libraries they already provide you with and one-touch program-and-run from the IDE. I honestly don't think it gets any easier, or more user friendly. They've abstracted all the details of the AVR micro-controller and the building/deploying process.
The alternative would be something like avr-studio (which also uses avr-gcc for its compiler) and an ICSP programmer (which is an additional piece of hardware that you have to buy). You aren't provided with much other than some register definition header files and some useful macros. You also aren't provided with any bootloader on your AVR chip, its just a blank slate. Anything you want to do with the microcontroller, you'll have to go in depth and learn about its hardware peripherals and registers and move bytes around in C. Want to print a debug message back to the PC? Write the UART routine for print() first and open a terminal on your computer.
A step lower from this you're writing code in an text editor and calling avr-gcc and avr-dude (programming command line tool) from a Makefile or command-line.
A step lower from that and you're writing assembly in a text editor and calling the avr-assembler and avr-dude.
I'm not sure where I'm going with this, I just think that the existing IDE and Arduino is absolutely genius and perfect for a beginner - their claim to fame is user friendly-ness. Maybe not the answer you're looking for, learn the work flow and make something cool with it.