What is the connection between data structures and data types?
I agree with your definition of abstract data type.  (A domain of values, together with some operations on that domain.)

I typically use the term data structure to refer to implementation techniques for data types.  Examples of data structures are things like balanced binary trees and hashtables.

For example consider the data type set of integers, with operations like union, intersection, is_member?, and insert_member.

You could implement the data type with at least three different data structures, each of which has advantages and disadvantages.  For example, you could implement your set using a balanced binary tree (like a red-black tree, for example).  Each node in the tree represents a member of the set, insertion and membership tests take $O(\log n)$.  Or, if your sets are over a finite (and relatively small) universe of items you could implement it with a bit array.  This is an array of $U$ bits (where $U$ is the size of the universe.) Inserting element $i$ just means setting the $i$th bit, testing for membership just means testing the $i$th bit.  But now intersection (respectively union) requires you to take the binary-and (respectively or) of $U$ bits, which kind of stinks when you have sets with just a few elements in them.  Similarly with hash table implementations, insertion and testing are nice (on average), but intersection and union can be somewhat more complicated to do efficiently.