If you don't mind creating a new array instead of modifying the existing one, you can easily do it with Linq:
bytes = bytes.Where((b, i) => (i + 1) % 4 != 0).ToArray();
To insert an item every 3 bytes, there is no way to do it using built-in extension methods. But you can create your own extension method:
public static IEnumerable<T> InsertEvery<T>(this IEnumerable<T> source, T valueToInsert, int frequency)
{
int n = 0;
foreach (var item in source)
{
if ((n + 1) % frequency == 0)
yield return valueToInsert;
yield return item;
n++;
}
}
...
bytes = bytes.InsertEvery(0, 3).ToArray();
By the way, are your 2 questions related to the same array ? i.e. you want to remove every fourth byte, then insert 0 every 3 bytes, all in the same array ? In that case, what you really want to do is to replace every fourth byte with 0, and the most efficient way to do it is to use a for loop:
for(int i = 3; i < bytes.Length; i += 4)
{
bytes[i] = 0;
}