Using an Arduino board to program an AVR
Do I have to use all the stuff from arduino?

A = No!

Can I use my own compiler for an arduino board? (GNU-GCC / AVR)
Can I use my own IDE for an arduino board? (Eclipse / Atmel Studio)
Can I still program through serial then? (Does the bootloader care which

Of Course! I use Eclipse IDE and I programming boards with Arduino bootloader directly in C/C++ using avr-gcc and avrdude.
Configuring Eclipse
First, let's download a plug-in for integrating AVR GCC and Avrdude + Eclipse IDE
To install the plug-in, point to the menu &quot;Help&gt; Install new software&quot;:

We will set a new location to download the plugin. Click the &quot;Add ...&quot; and type: AVR - Eclipse and the URL: http://avr-eclipse.sourceforge.net/updatesite

Now select the plugin that appeared in the list and click &quot;Next&quot;:

Next, next, &quot;I Acept the terms...&quot;, restart...
Now we install the plug-in, we will set it up. Point to the menu &quot;Window&gt; Preferences.&quot; Click in &quot;AVRDUDE&quot;. The following screen:

On the next screen &quot;AVR DUDE&quot; let's set our recorder. Click &quot;Add&quot; to &quot;Programmer configuration&quot;. Search for &quot;Arduino&quot;.

Or, if you prefer, you can program making use of avr libraries in own Arduino IDE. Try to upload the following code into an Arduino board! While a blink costs almost 1,056 bytes of memory using an Arduino Uno, the following code uses only 164 bytes and does the same thing :)
#define F_CPU 16000000UL    
#include &lt;avr/io.h&gt;         
#include &lt;util/delay.h&gt;     

#define set_bit(Y,bit_x) (Y|=(1&lt;&lt;bit_x))    
#define clr_bit(Y,bit_x) (Y&amp;=~(1&lt;&lt;bit_x))   
#define tst_bit(Y,bit_x) (Y&amp;(1&lt;&lt;bit_x))     
#define cpl_bit(Y,bit_x) (Y^=(1&lt;&lt;bit_x))    

#define LED PB5         

int main( ){
    DDRB = 0xFF;        

    while(1){               
        cpl_bit(PORTB,LED); 
        _delay_ms(200);     
    }
}

If you use Linux, you can take a sudo cat/dev/ttyACM0 to detect what lies serial and echo &quot;string&quot; &gt;&gt; /dev/ttyACM0 to send data.