What you have there is an XML Element with an attribute=value combination you wish to get.
While you could have a simple awk or sed that will retrieve 1.2.3 from the one-line example you have, you really should use an XML parser. It will likely not work in the future if you don't.
While you have given the attributes all-on-one-line example of:
<?xml version="1.0" encoding="utf-8"?>
<pkg-info overwrite-permissions="true" relocatable="false" identifier="com.application.something" version="1.2.3" format-version="2" generator-version="ABC" install-location="/Applications" auth="root">
</pkg-info>
The same data could just as easily be:
<?xml version="1.0" encoding="utf-8"?>
<pkg-info overwrite-permissions="true" 
          relocatable="false" identifier="com.application.something" 
          version="1.2.3" format-version="2" 
          generator-version="ABC" install-location="/Applications" auth="root">
</pkg-info>
Or,
<?xml version="1.0" encoding="utf-8"?><pkg-info overwrite-permissions="true" relocatable="false" identifier="com.application.something" version="1.2.3" format-version="2" generator-version="ABC" install-location="/Applications"  auth="root"/>
and still be parsed as the same data. All three examples are valid XML but none of the awk or sed answers here handle any but the first example.
For XML, a '\n', ' ', '\t' and '\r' are all the same1  but to awk and sed those characters have very different meaning. To try and coerce a line oriented tool like awk or sed to deal with tag oriented data like XML is extremely fragile.
The best way to deal with this is to use an XPath query. The relevant query would be:
/pkg-info/@version
DEMO
Given file that has some valid form of XML as above, you can use one of these methods.
Here is a simple example in Ruby. Use nokogiri xml parser to parse with an xpath to the attribute of interest:
ruby -r nokogiri -e 'doc=Nokogiri::XML($<.read)
puts doc.xpath("/pkg-info").attribute("version").value' file
1.2.3
(You may need to install nokogiri with gem install nokogiri on your system...)
Or with XMLStarlet:
xml sel -t -v '/pkg-info/@version' file
1.2.3
If you have XML::XPath module installed with your Perl, (and most systems do) you also have a command line XPath query tool called xpath. You can do:
xpath -q -e '/pkg-info/@version' file
 version="1.2.3"
Then run that through sed to just get the value:
xpath -q -e '/pkg-info/@version' file | sed -E 's/[^"]*"([^"]*).*/\1/'
1.2.3 
Note that an XML parser will work with the any legit version of your XML data. The other sed or awk solutions here will not.
And if your wreally wreally wreally want to use a regex, Perl is a better bet. This works with all three examples above:
perl -0777 -lnE 'say $1 if /(?:\s|>)<pkg-info[\s\S]*?\sversion="([^"]+)"/m' file
If you hafta hafta hafta have an awk you can set RS-"^$" which has the effect of reading the entire file in as one string then:
- Find the point with 
"<pkg-info ". 
- Since these are attributes and not nested tags, there will be no 
> in the attribute section. But, no matter how the <pkg-info element is terminated, there must be a > to terminate it. 
- Now sub everything on either side of the 
' version=" value with "" 
- Print and profit.
 
This awk works with all my examples; HOWEVER, you really should use an XML parser.
awk -v RS="^$" '{ x=index($0, "<pkg-info ")
                  s=substr($0,x)
                  sub(/[^>]*\sversion="/,"", s)
                  sub(/".*/,"", s)
                  print s
                }' file
1 So long as those characters are insignificant whitespace, which they are in this example...