Removing n elements from array starting from index
I believe that if the len &lt; 0, it's better to adjust idx and len values. This will eliminate two branches of code.

Another suggestion is to use more readable variable names.
For instance, method arguments could be named startIndex and length respectively.

public static T[] RemoveAt&lt;T&gt;(this T[] array, int startIndex, int length)
{
    if (array == null)
        throw new ArgumentNullException("array");

    if (length &lt; 0)
    {
        startIndex += 1 + length;
        length = -length;
    }

    if (startIndex &lt; 0)
        throw new ArgumentOutOfRangeException("startIndex");
    if (startIndex + length &gt; array.Length)
        throw new ArgumentOutOfRangeException("length");

    T[] newArray = new T[array.Length - length];

    Array.Copy(array, 0, newArray, 0, startIndex);
    Array.Copy(array, startIndex + length, newArray, startIndex, array.Length - startIndex - length);

    return newArray;
}