Simple linked list with two iterators As part of the practice, I created minimalist linked list named SimpleList which can be iterated in two different ways: one element after another or by every second element. 

Because I'm beginner I would really appreciate your opinion about my solution. Is it correct? What should I change?

public class SimpleList&lt;T&gt; : IEnumerable&lt;T&gt;
{
    protected class Node
    {
        public T Data { get; set; }
        public Node NextNode { get; set; }

        public Node(T data, Node nextNode)
        {
            Data = data;
            NextNode = nextNode;
        }
    }

    protected Node Head { get; set; } = null;

    public void Add(T data)
    {
        Head = new Node(data, Head);
    }

    #region IEnumerable&lt;T&gt; implementation
    public IEnumerator&lt;T&gt; GetEnumerator()
    {
        var current = Head;
        while (current != null)
        {
            yield return current.Data;
            current = current.NextNode;
        }
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
    #endregion

    #region second iterator implementation
    private class EverySecondElementIterator : IEnumerable&lt;T&gt;
    {
        private readonly Node head;

        public EverySecondElementIterator(Node head)
        {
            this.head = head;
        }

        public IEnumerator&lt;T&gt; GetEnumerator()
        {
            var current = head;
            while (current != null)
            {
                yield return current.Data;
                current = current.NextNode?.NextNode;
            }
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }

    public IEnumerable&lt;T&gt; EverySecondElement =&gt; new EverySecondElementIterator(Head);
    #endregion
}
Use extension methods
I find you did well by implementing the EverySecondElementIterator as a separate class. However, I also think it would be better to turn it into an extension of IEnumerable&lt;T&gt; and use MoveNext instead of the internal Node.
Otherwise if someone suddenly comes up with the idea to skip every third element, you would need to modify the original SimpleList by creating another private class class and another property. We usually try to avoid modifying code that is tested and is working well. This would also violate the open/closed principle.
It's much safer and extendable to create a new and independent extension that you also can resue with any IEnumerable&lt;T&gt; and skip every-second-element of any collection.
Let the SimpleList be closed for modifications by not implementing anything as specific as that enumerator. It is already opend for extension by implementing the IEnumerable&lt;T&gt; interface. Make use of it.