Hi @Mitesh, what you wrote is correct except for your conclusion at the end about isomorphism.

> But at the same time, there would also be an incoming arrow from A to terminal object because of the later property of being a terminal.


> In that case, wouldn't we end up having an isomorphism between object A and terminal object?


Just having some arrow from A to B, and another from B to A, does not make A and B isomorphic.

But the definition of isomorphism calls for more than that: these arrows must be "inverses" of each other, meaning that when they are composed, the result is an identity arrow.

If it happens to be that the only endomorphisms (self-arrows) in a category are the identities, only then can one immediately conclude that two objects are isomorphic based on the existence of arrows going both ways.

This is concretely shown in the category of sets. In the old days, when we talked about sets without category theory, the definition of isomorphism meant that two sets have the same size. So the
general categorical definition of isomorphism needs to amount to the same thing for Set.

Take two non-empty sets, A and B, of different sizes. They are not isomorphic, in the classical sense of having the same number of elements. And they are not isomorphic categorically either. There will always be an ample number of functions from A to B and vice-versa - at least one, and more than one if the target set is non a singleton.

But by and large, two opposite moving arrows from A to B will not compose to the identity function - that's a strong extra requirement, that two arrows are inverse to each other. For example, if A has multiple elements, and a function \\(f: A \rightarrow B\\) sends everything in A to single element in B, then there is no way that a function \\(g: B \rightarrow A\\) can be inverse to \\(f\\). The result of going through \\(f\\) and then back through \\(g\\) will be to take you to some fixed element in A. But that composition is a constant function on A, not the identity function on A.