user39489: I am trying to understand how an Arduino Uno communicates with a PC and why it does so.
As far as I understand, an Arduino can be programmed to communicate with a PC only via a COM interface. At the same time, an Arduino Uno uses a physical USB interface to connect to a PC and it has a USB-serial converter onboard. So data sent from the board is converted from COM to USB to be transferred to the PC where USB data is converted to COM by a device driver to be read by a COM-port listener.
Why does this COM-related stuff is needed if the Arduino already uses the USB stack for connection? And is the Arduino able to emulate a keyboard and mouse if it has to use interrupts for this, so it has to act like USB device without using COM?

user4143: The problem with your understanding is with what "COM" is.
"COMx" is not a physical serial port - it is merely a concept. It is a "serial device" in Windows.
That Serial Device is implemented as a CDC/ACM protocol on USB. It's not "converted" - "COMx" is just the visible interface to the PC's end of the CDC/ACM connection.
The ATMega328P chip (and the ATMega2560) can't talk USB directly. They talk UART. So UART data is sent to another chip that can talk both USB and UART to bridge the two technologies.
So from the PC perspective the chain is:
CDC/ACM Driver ("COMx") => USB => ATMega16U2 => UART => ATMega328P

Boards with an ATMega32U4 chip on them, like the Leonardo, can talk USB directly - so the sequence is much shorter:
CDC/ACM Driver ("COMx") => USB -> ATMega32U4

Again there is no conversion from "COMx" to "USB" since "COM" is just the name given to the exposed end of the CDC/ACM driver. 
It can be said that CDC/ACM emulates a serial port over USB. It forms a channel between the CDC/ACM driver ("COMx") and a pair of bulk endpoints in the chip at the other end of the connection.

39489: <p>I am trying to understand how an Arduino Uno communicates with a PC and why it does so.</p>

<p>As far as I understand, an Arduino can be programmed to communicate with a PC only via a COM interface. At the same time, an Arduino Uno uses a physical USB interface to connect to a PC and it has a USB-serial converter onboard. So data sent from the board is converted from COM to USB to be transferred to the PC where USB data is converted to COM by a device driver to be read by a COM-port listener.</p>

<p>Why does this COM-related stuff is needed if the Arduino already uses the USB stack for connection? And is the Arduino able to emulate a keyboard and mouse if it has to use interrupts for this, so it has to act like USB device without using COM?</p>
 4143: <p>The problem with your understanding is with what "COM" is.</p>

<p>"COMx" is not a physical serial port - it is merely a concept. It is a "serial device" in Windows.</p>

<p>That Serial Device is implemented as a CDC/ACM protocol on USB. It's not "converted" - "COMx" is just the visible interface to the PC's end of the CDC/ACM connection.</p>

<p>The ATMega328P chip (and the ATMega2560) can't talk USB directly. They talk UART. So UART data is sent to another chip that can talk both USB and UART to bridge the two technologies.</p>

<p>So from the PC perspective the chain is:</p>

<pre><code>CDC/ACM Driver ("COMx") =&gt; USB =&gt; ATMega16U2 =&gt; UART =&gt; ATMega328P
</code></pre>

<p>Boards with an ATMega32U4 chip on them, like the Leonardo, can talk USB directly - so the sequence is much shorter:</p>

<pre><code>CDC/ACM Driver ("COMx") =&gt; USB -&gt; ATMega32U4
</code></pre>

<p>Again there is <em>no</em> conversion from "COMx" to "USB" since "COM" is just the name given to the exposed end of the CDC/ACM driver. </p>

<p>It can be said that CDC/ACM <em>emulates</em> a serial port over USB. It forms a channel between the CDC/ACM driver ("COMx") and a pair of <em>bulk</em> endpoints in the chip at the other end of the connection.</p>
