This is quite a large question, to which a comprehensive answer is easily found in the more comprehensive dictionaries under Know, with copious examples. However, in direct answer, there certainly are meanings not shared between the two, which I will try to summarise, although it is worth pointing out that the differences in usage can be very slight.
Scio is the most general word, meaning that you have a certainty, or at least clearly perceive, some fact(s) or other. It is followed by the kinds of clause that you would expect: acc. + inf., de + abl., relative + subj., neuter pronoun, and so on. Its opposite nescio, (‘not to know’, ‘be unaware/ignorant of’ etc.) is used similarly. But scio (and nescio) can also have the sense of ‘know how to …’ (particularly where it refers to a skill) as in scio scribere, nescio aratro uti.
The simple idea behind ‘not to know’ is expressed by ignoro (this being possibly more definite than nescio, which can be qualified by, for example, a clause after quin). The opppsite of ignoro is nosco, meaning ‘am acquainted with’, which is more usually seen in the perfect tenses, still giving a present sense in English. To claim a personal acquaintance, say, you might appropriately introduce yourself with te novi, or me no(ve)ris.
With, I think, a shade of meaning rather more active than that of simply learning (for which disco/didici or certior fieri is appropriate), the verb for the sense of ‘getting to know’ or ‘finding out’ is cognosco, most often in the perfect tenses to imply the knowledge for which scio in the present might sometimes be used equally well. Comperio is different again, with the sense of ‘know for certain’ or ‘tried and tested by experience’; compertum habet = ‘he knows without doubt’.