I too once thought like you, but in CS counting is your friend.
When counting sets, we can determine if two sets have the same size or cardinality. For example countable infinite sets can always be put into correspondence with the natural numbers $\mathbb{N}$. These countably infinite sets are recursively enumerable languages, they can be iterated indefinitely.
So lets call the set of even numbers $\mathbb{E}$ and the set of odd numbers $\mathbb{O}$
Now, starting from the beginning, in increasing order, pair the smallest even number with the smallest natural number, next, pair the next smallest number with the next smallest natural number, so on and so forth. It looks something like this:
$\mathbb{N} = \{0, 1, 2, 3, 4, ...\}$
$\mathbb{E} = \{2, 4, 6, 8, 10, ...\}$
We see for every number in $\mathbb{N}$ there is a number in $\mathbb{E}$, that is, every number in $\mathbb{E}$ can be mapped to a unique number in $\mathbb{N}$ and vice versa.
This kind of mapping is known as a computable map or a bijection Such functions are one-to-one and onto, every element from each set is paired with a unique element of the other set.
The same argument can be applied to show than $|\mathbb{O}| = |\mathbb{N}|$.
Now, you may ask why is this important to CS, well, every language (set) that can be mapped to $\mathbb{N}$ can be recognized by a computer machine, and languages that do not map to $\mathbb{N}$ cannot even be recognized by a computer, therefore, we study this.