What's the difference between a v$ view and its dba_ equivalent? What's the general difference between a v$ view and its dba_ equivalent? Take, for example, v$tablespace and dba_tablespaces.
The easiest way to think of it is:


DBA_ / USER_ / ALL_ views are built on the data dictionary - they're not available if the database is not mounted and opened.
V$ views tend to run against the instance, and therefore may be available if the database is not mounted, or is not mounted and opened, depending on the nature of the view.


Using your example:


V$TABLESPACE is a view on X$KCCTS, which is an internal memory structure.  
DBA_TABLESPACES is a view on the data dictionary table SYS.TS$