Is converting SMARTS to SMILES a "lossless" operation?
SMARTS is deliberately designed to be a superset of SMILES. That is, any valid SMILES depiction should also be a valid SMARTS query, one that will retrieve the very structure that the SMILES string depicts.

However, as a query language, SMARTS can be more general than SMILES is. For example, CC as a SMILES string depicts a single compound: ethane. As a SMARTS query, though, CC will match ethane, but will also match propane, acetic acid, cyclohexane, vancomycin, etc.

There's also SMARTS strings which are not valid SMILES strings. You list several in your question: [#6]-1=[#6]-[#6](-[#6]-[#6](-[#6]-1)-[#6])=[#8] is not a valid SMILES representation, unless your SMILES parser is being particularly generous. Even if it is, [#6]-1=[#6]-[#6](-[#6]-[#6](-[#6]-1)-[#6])=[#8,#7] is also a valid SMARTS query which should match your molecule, but not even a generous SMILES parser is likely to accept it.

Despite being similar, SMARTS and SMILES are intended for fundamentally different things - the purpose of SMILES is to represent particular compounds, whereas SMARTS represents a query against a range of possible molecules, or an abstract description of a set of possible molecules. As such, they're not inter-convertible, even if the strings are literally identical.

For your particular case, yes, CC1CC=CC(=O)C1 is both a valid SMILES and a valid SMARTS, but as a SMARTS query, it represents not just 5-methyl-2-cyclohexen-1-one, but also 5-propyl-2-cyclohexen-1-one and 3-hydroxy-5-butyl-6-amino-2-cyclohexen-1-one, as well as many others, all of which contain that substructure. The SMARTS viewer you link doesn't depict this explicitly, because it's implicit in the use of SMARTS that it's a substructure pattern for a broader class of compounds.