I’ve found an answer to my first problem. The functions, that print out the names in the list, are defined in publ-imp-author.mkvi. I copied the responsible function to publ-imp-iso690.mkiv, edited one line (see code below) and everything works as intended.

Tomáš

% publ-imp-iso690.mkiv
\startbtxrenderingdefinitions[iso690]
\definebtx
     [iso690]
     [
         default=default,
         specification=iso690,
     ]
\definebtxrendering
     [iso690]
     [
         specification=iso690,
         numbering=yes,
     ]
\setupbtx[default:list]
     [
         authorconversion=inverted,
     ]
% field definitions
\starttexdefinition btx:iso690:author
     \btxdoif {author} {
         \btxflush{author}
         \btxperiod
     }
\stoptexdefinition
% book definition
\startsetups btx:iso690:list:book
     \texdefinition{btx:iso690:author}
     \removeunwantedspaces
\stopsetups
% surname to small caps in list
\startsetups \s!btx:\s!list:\s!author:inverted
    \fastsetup{\s!btx:\s!list:\s!author:concat}
    \ifx\currentbtxvons\empty \else
        \texdefinition{\s!btx:\s!cite:\s!author:\s!de}
        \doifnotmode {\s!btx:\s!de} {
            \currentbtxvons
            \btxparameter{\c!separator:vons}
        }
    \fi
    \ifx\currentbtxsurnames\empty \else
        \WORDS{\currentbtxsurnames}        % <-- changed line
        \ifx\currentbtxjuniors\empty \else
            \btxparameter{\c!separator:juniors}
            \currentbtxjuniors
        \fi
    \fi
    \ifx\currentbtxfirstnames\empty
        % firstnames are optional
    \else
        \btxparameter{\c!separator:invertedfirstnames}
        \currentbtxfirstnames
    \fi
    \ifx\currentbtxvons\empty \else
        \doifmode {\s!btx:\s!de} {
            \btxparameter{\c!separator:vons}
            \currentbtxvons
        }
    \fi
    \fastsetup{\s!btx:\s!list:\s!author:others}
\stopsetups