For your question number 1, these are the details.
In the file: /usr/share/misc/pci.ids, under the heading of:
# List of known device classes, subclasses and programming interfaces
which appears at line 36720 in my debian distro copy of that file, are found the numbers of the classes and subclasses which can be used in the lspci command, as shown on the lspci man page:
lspci -d [<vendor>]:[<device>][:<class>[:<prog-if>]]
Show only devices with specified vendor,
device, class ID, and programming interface.
The ID's are given in hexadecimal and may be
omitted or given as "*", both meaning "any value".
The class ID can contain "x" characters which stand for "any digit".
The numbers in the command: lspci -vnn -d ::0280, for the -d option, are as follows, taken from the pci.ids file mentioned above:
The <vendor> parameter is empty.
The <device> parameter is empty.
The <class> parameter is 02 for "Network controller"
The subclass parameter which is placed immediately after the class parameter is 80 for "Network controller", yielding the 0280 used in the lspci command. The first zero could have been stripped without having any effect.
Note that the second mention of "Network controller" is of the subclass whereas the first mention is the class, (both being named the same can be confusing). The subclass has the number 80, and covers the wifi controllers, or controllers that are not ethernet, nor token ring, nor anything else in that list under the heading of the class "C 02 Network controller".
The last parameter in lspci command, (programming interface) is ignored since it's not relevant in this case.
In relation to your question 2, I refer you to the last paragraph in post #15 and post #20. Once the driver is seen by the kernel, it's loaded, and then it's a matter of the networking program to be configured to have it up and usable. If it's all configured, you won't have to go through re-establishing anything, it should just work.