Many ABAPers gets confused initially with these tables. The difference lies in there Implementation and Behavior. Lets have a closer look at each to understand them better.
This is maintained at Domain Level.
In some cases you already know when you define a domain that all the fields referring to this domain should be checked against a certain table. This information can be stored in the domain by entering a value table.
The system proposes the value table as check table when you try to define a foreign key for this field. You can override this proposal.
Entering a value table does not implement a check. The check against the value table only takes place when a foreign key is defined.
Table whose key fields are used to check the foreign key fields (see Foreign Keys). Only entries that are contained in the key fields of the check table can be contained in the foreign key fields.
The check table is used to check whether the input values are valid and for the input help (F4 help).
For example you have Employee master table & Employee Transaction table.
When ever an employee Transacts we need to check whether that employee exists , so we can refer to the employee master table. This is nothing but a Parent & Child relationship . Here data can be maintained at client level, no development involved.
As per DBMS what we call Parent table, is called as check table in SAP.
The contents of the check will be used as an input help(F4 Help) for a particular field on which a check table is assigned. But the contents of Value Table are never used in Input Help.