(This question belongs in the Oracle forum, not here.)
A Varray is an ordered array (elements are indexed 1,2,3,...), which is physically stored in the table it belongs to.
A Nested Table is actually a separate physical table but made to look like it is nested within the table it belongs to. There is no implicit ordering (no index 1,2,3,... defined), rather you reference the data by key values.
I would never use either in the database as they add a lot of SQL complexity for no gain. In a PL/SQL program you might use a nested table so that you can select from an in-memory array as if it were a real table.