Set theory aspects of category theory I have never learnt axiomatic set theory, but have studied it from Munkres's Topology book first chapter. So I do not understand the difference between a class and a set except in some vague sense.
Now I am willing to learn category theory and have studied the chapter in Hungerford's book. But this issue of classes vs sets and the related ones like when is a category small are unclear to me. What could be a good place to study these topics (does MacLane deal with them ?) in a proper logical way for the purpose of understanding categories? I am not planning to specialize in logic/set theory so am not looking for the most detailed books.
I have taken undergrad courses in Analysis, Topology and graduate level courses in Algebra. 
 A: There are two ways to approach this question, depending on the foundations you use for mathematics. One option is to make "classes" mathematical objects that exist formally. The other is to treat any statement involving the word "class" as an informal shorthand for a statement (or occasionally, an infinite number of statements) that formally only refers to sets. 
When classes are not given formal existence, a class $\mathbf{C}$ can be thought of as the collection of all elements $x$ in the universe that satisfy some property. (I will be vague about what a "property" is.) For example, for any set $A$, the collection $\mathbf{C} = \{ x \mid A \subseteq x \}$ of all sets containing $A$ is a class. Then an "informal" statement such as "$\forall x \in \mathbf{C}, B \cap x \ne \emptyset$" is considered shorthand for "$\forall x \ A \subseteq x \Longrightarrow B \cap x \ne \emptyset$."
What is common to all these systems is that a statement such as "$\mathbf{C} \in x$" or "$\mathbf{C} \in \mathbf{D}$," in which a class $\mathbf{C}$ is regarded as an element of another set or class, is considered meaningless (or, at least, automatically false) if $\mathbf{C}$ is a proper class (i.e., a class other than a set). 
To prove that a particular class is actually a set requires knowledge of the axioms of set theory, since most of these axioms take the form "such and such class is a set." In practice, by far the most frequently used axiom schema is that of comprehension. For each "property" $p$, you have an axiom that says that for every set $E$, the class
$$\{ x \in E \mid p(x) \}$$
is a set. In most cases, you consider all elements of some big set $E$ that satisfy some property, and you have known for a long time that the big set $E$ was a set rather than a proper class. 
Depending on the precise axioms of set theory adopted, the two schemes can be made equivalent in the sense that a theorem mentioning only sets can be proved in one system if and only if it can be proved in the other. The more standard route, however, is to treat sets as being the only objects with formal existence.
Dugundji's Topology provides a brief introduction to foundations in which classes are treated as objects that exist formally, but where the system works out to be equivalent to the standard approach.
The first few pages of Jech's Set Theory describe foundations in which classes are informal objects only. This is more standard.
Edit: For something more in-depth, you can check out this paper by Michael Shulman: http://arxiv.org/abs/0810.1279
A: Suppose we know what sets are, either naively or in some more formal way. Let us say that a set $\mathcal U$ is a (Grothendieck) universe if the following hold.


*

*$x\in y\in\mathcal U\implies x\in \mathcal U$;

*$x,y\in\mathcal U\implies \{x,y\}\in \mathcal U$;

*$x\in\mathcal U\implies\mathcal P(x)\in \mathcal U$;

*if $J\in\mathcal U$ and $x_j\in\mathcal U$ for all $j\in J$, then $\bigcup_{j\in J}x_j\in\mathcal U$.


One can then show that all the set operations performed on elements of $\mathcal U$ result in elements of $\mathcal U$. For example if $x,y\in\mathcal U$ then $x\times y\in\mathcal U$, $x^y\in\mathcal U$, etc. In fact, if you assume that the set of natural numbers is an $element$ of $\mathcal U$, then $\mathcal U$ is a model of set theory, so you can do all "normal" mathematics inside $\mathcal U$. This also means that you cannot prove the existence of such a $\mathcal U$ in set theory, but let's forget about that for a moment.
Suppose we have some universe $\mathcal U$. We call the elements of $\mathcal U$ $\mathcal U$-sets and the subsets of $\mathcal U$ $\mathcal U$-classes. Notice that every $\mathcal U$-set is a $\mathcal U$-class (follows from condition (1) above), but not vice versa (consider $\mathcal U$ itself). One can then define a $\mathcal U$-category to be a category whose collections of objects and arrows are $\mathcal U$-classes. Such a category is small when these collections are $\mathcal U$-sets.
There are several ways to use these universes. One powerful way is to assume that every set is contained in some universe. Then in particular, since we defined a universe to be a set itself, we get a chain of universes $\mathcal U_0\in\mathcal U_1\in\mathcal U_2\in\dotsb$, and whenever our categories become too big to be (small) $\mathcal U_n$-categories we can just switch to a bigger universe.
If the above sounds too much, you can just assume the existence of one universe $\mathcal U$ which contains the natural numbers. [I'm a little unsure about the details, but I believe this should be equivalent to assuming that our standard set theory ZFC is consistent. Correct me if I'm wrong.] Then, instead of calling the elements of $\mathcal U$ $\mathcal U$-sets, you call them just sets (or small sets), and you call the subsets of $\mathcal U$ just classes. At least for the purposes of category theory, this is a perfectly good way to define sets and classes. Plus, whenever you suddenly see that you need bigger categories, you can just assume one bigger universe and continue ;)
